MySQL之創、增、刪、改、查
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之創、增、刪、改、查