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; 相当于复制一份。数据都在