1. 程式人生 > >MySQL之創、增、刪、改、查

MySQL之創、增、刪、改、查

整數 alter times font 符號 drop current utf run

MySQL

Select version(); 當前服務器版本

Select database(); 查看當前工作數據庫

Show databases; 顯示所有數據庫

Select user(); 或 select current_user(); 當前用戶

Select curdate(); 或 select current_date(); 當前日期

Select curtime(); 或 select current_time(); 當前時間

Select now(); 或 select current_timestamp(); 顯示系統時間當前日期+時間

Show engines; 顯示當前數據庫服務器支持的存儲引擎

Show charset; 查看當前服務器所支持的字符集,

數據類型:

數字:整數:tinyint, smallint, mediumint, int, bigint,

小數:decimal(p,s) create table t(t decimal(4,2));

字符串:定長char(),, 變長varchar() 變長文本text 大文本(0-4G)longtext, enum() (枚舉)

日期類型date 日期時間類型datetime 二進制

1)創建數據庫 > CREATE DATABASE ** ;

2)顯示所有數據庫: >show databases;

3)刪除數據庫> DROP DATABASE **;

4)選擇要用的數據庫 Show databases; USE **;

查看包含的表 SHOW TABLES; 當選擇完數據庫後,此命令等同於下:Show tables from **;

另:顯示表格show tables from mydb(數據庫名);

顯示表結構: >desc mydb.tablename; 等價於:>show columns from mydb.tablename ;

CREATE DATABASE IF NOT EXISTS aa DEFAULT CHARACTER SET utf8; 判斷aa是否存在,不存在就建立,並設定aa編碼為utf8.

CREATE TABLE <表名> (<列名><數據類型> [列級完整性約束條件]

[,<列名><數據類型> [列級完整性約束條件]]…

[,<表級完整性約束條件>])

例如:建立學生信息表Create table products( id char(20) not null,

price float default 0.01,

constraint primary key (id) );

註:列級約束條件有兩個任選項:

NOT NULL,表示此列不得置NULL,在其後還可加UNIQUE任選項,表示列值不得重復。

DEFAULT,當此列的值空缺時,填以缺省值

主關鍵字約束指定表的一列或幾列的組合的值在表中具有惟一性,即能惟一地指定一行記錄。每個表中只能有一列被指定為主關鍵字,且IMAGE 和TEXT 類型的列不能被指定為主關鍵字,也不允許指定主關鍵字列有NULL 屬性。

CREATE TABLE dd(

id INT(6) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, 自增長

sname VARCHAR(20), sgender ENUM(‘1‘,‘0‘,‘secret‘), 枚舉選擇項

PRIMARY KEY(id)

)ENGINE= MYISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; 從5開始增,默認utf-8

建表

CREATE TABLE students(

sno INT UNSIGNED NOT NULL AUTO_INCREMENT,

sname VARCHAR(20) NOT NULL,

sgender ENUM(‘1‘,‘0‘),

sage TINYINT UNSIGNED NOT NULL,

sbirthday DATETIME,

saddress VARCHAR(50),

sscore DECIMAL(4,1),

PRIMARY KEY(sno)

)ENGINE=MYISAM AUTO_INCREMENT=200901 DEFAULT CHARSET=utf8;

insert into students values(null,‘李四‘,‘1‘,18,‘2000-1-18‘,‘鄭州‘,82);

insert into students values(null,‘zz‘,‘0‘,16,‘2003-1-18‘,‘上海‘,68.9);

insert into students values(NULL,‘李1‘,‘1‘,17,‘2000-1-18‘,‘鄭州‘,85),(null,‘李3‘,‘0‘,19,‘2000-1-18‘,‘鄭州‘,78);

信息不全,插入單獨幾列信息,

insert INTO students(sname,sage) values(‘Jack‘,18),(‘Andy‘,20),(‘chu‘,17);

把查詢結果,再插入數據,

INSERT INTO students(sname,sgender,sage,sbirthday,saddress,sscore) SELECT sname,sgender,sage,sbirthday,saddress,sscore FROM students;

DELETE FROM students WHERE sno=200918;

DELETE FROM students ; -- 無條件刪除所有記錄。

TRUNCATE TABLE students; -- 直接清空數據表,全部刪除,auto_increment 從新分配,很少用

replace into students (sname,sage) VALUES(‘A‘,18),(‘B‘,20);

REPLACE INTO students VALUES (200917,‘YEAR‘,‘0‘,18,‘2001-5-5‘,‘GUANGZHOU‘,77.68);

UPDATE students SET sscore=79,sname=‘張111‘,sbirthday=‘2001-8-8‘,saddress=‘shenzhen‘ WHERE sno=200902;

UPDATE students SET sscore=0 WHERE sscore IS NULL; -- 得分為空的,修改為0分,與下面均不一樣

UPDATE students SET sscore=0 WHERE sscore=‘‘;

UPDATE students SET sscore=0 WHERE sscore=NULL;

查看數據信息

SELECT * FROM students;

SELECT sname 姓名,sscore 成績,saddress 家庭地址 FROM students;

SELECT * FROM students WHERE sscore!=78;

SELECT * FROM students WHERE sscore<>78;

SELECT * FROM students WHERE NOT sscore=78;

SELECT * FROM students WHERE sscore BETWEEN 80 AND 90;

SELECT * FROM students WHERE sbirthday BETWEEN ‘2001-1-1‘ AND ‘2010-1-1‘;

SELECT * FROM students WHERE saddress=‘鄭州 ‘;

SELECT * FROM students WHERE sname LIKE ‘李_‘; /*like中,_代表任意1個字符,號*/

SELECT * FROM students WHERE sname LIKE ‘%1%‘; /*like中,%代表任意0個或多個任意符號*/

SELECT * FROM students WHERE sno NOT IN (200917,200925); /* in 表示在括號內的項,。還有 not in 就是除了 */

SELECT * FROM students WHERE sscore IS NOT NULL;

SELECT * FROM students GROUP BY sname ORDER BY sno ASC, sscore ASC,sno DESC

/*GROUP BY用來將結果按列名的值進行分組,該屬性列值相等的元組為一組,,ORDER BY將結果表按列名的值升序ASC或降序DESC排序*/

SELECT COUNT(sno) AS 人數,MIN(sscore) AS 最低分, MAX(sscore) AS 最高分,AVG(sage) AS pingjunnianling FROM students;

SELECT 姓名, Year(Date())-Year(出生年月) AS 年齡 FROM Students

SELECT sname,COUNT(*) AS 人數 FROM students GROUP BY sname; 可得重名的名字和人數

修改表名,修改dd為student

RENAME TABLE dd TO student;

增加列,即字段,即維度刪除列

ALTER TABLE tbl_name [ADD<新列名><數據類型>[完整性約束]]

[DROP<列名><完整性約束名>]

[MODIFY<列名><數據類型>];

ADD用於增加新列和新的完整性約束條件,新增加的列一律為空值。(index, primary key等)

DROP用於刪除指定的完整性約束條件(index,primary key, foreign key)

MODIFY用於修改原有的列定義

ALTER TABLE student ADD sscore TINYINT;

ALTER TABLE student ADD saddress VARCHAR(100) AFTER sname;

ALTER TABLE student DROP COLUMN sscore ;

ALTER TABLE student DROP saddress;

ALTER TABLE suser MODIFY nii INT;

復制一個表結構(字段),的兩種方法:

CREATE TABLE stu LIKE students; 只復制一個表結構(字段)

CREATE TABLE stu2 SELECT * FROM students; 相當於復制一份。數據都在

MySQL之創、增、刪、改、查