数据库都学完了,然而我正要开始学习,,这真是一个忧伤的故事。。
一点一点来吧,现在把mysql的一些基本语句mark一下,以后也好看看:)
mysql版本:5.7.6(版本不同语法会有些不同)设置环境为:不区分大小写
show databases; 或者show schemas;显示数据库中存在的模式(mysql中写database 和 schema 似乎是一样的,下面就全部写schema吧)
use <模式名>; 例如:use st; 表示进入st这个模式
create schema <模式名>; 创建模式
drop schema <模式名>; 删除指定模式
desc <表名>; 查看表结构
show tables; 显示所有表
show create table <表名>;显示此表的创建命令
select * from <表名>; 查看相应表中内容
drop table <表名>; 删除相应表
insert into <表名>(列属性1,列属性2...) values('列属性值1','列属性值2',...); 插入数据
delete from <表名> where 属性x='xxx' and 属性y='yyy';删除属性x值为xxx并且属性y值为yyy的数据
group by <列属性> : 其实就是去重。可以和MAX等一起用,因为去重留下来的那个可以选择的,MAX就是选择最大的留下来。GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。(用于将相同属性合在一起的) http://www.w3school.com.cn/sql/sql_groupby.asp
having : SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数(SUM,COUNT等)一起使用。
SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer HAVING SUM(OrderPrice)<2000
只查看某个表中所有列名:select column_name from information_schema.columns where table_schema='数据库名称' and table_name='表名';
select * from <表名> where 属性x like "%属性值%";在表中模糊查找含有某个字段内容的数据
select left(<列属性>, len) from <表名> limit num; 在某个表中找出某列属性的前num个值,并且这些值都只取前len位
format(a,b); a保留b位小数,a可以是列属性名
concat(x,y,z); 连接x,y,z。可以是字符串,也可以写列属性名
concat_ws(a,x,y,z);有分隔符的字符串连接,分隔符为a
group_concat(x,y,z); 行转列,也算是字符串连接
substr(s,a,len); 取子串,从s的第a个字符开始,长度为len
下面建立几个表:
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY, /*列级完整性约束条件,Sno是主码*/
Sname CHAR(20) UNIQUE, /*Sname取唯一值*/
Sex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
CREATE TABLE Course
(Cno CHAR(4) PRIMARY KEY,
Cname CHAR(40),
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY (Cpno) REFERENCES Course(Cno) /* 被参照表示Course,被参照列是Cno 。只是想说明自己可以参照自己,但并没有什么用。。*/
);
CREATE TABLE sc
(Sno CHAR(9),
Cno CHAR (4),
Grade SMALLINT,
PRIMARY KEY (Sno,Cno), /*主码由两个属性构成,必须作为表级完整性进行定义*/
FOREIGN KEY (Sno) REFERENCES Student(Sno), /*表级完整性约束条件,Sno是外码,被参照表是Student*/
FOREIGN KEY (Cno) REFERENCES Course(Cno)
);
参照完整性约束:外码的值必须与被参照表的相应主码值相同,否则为空(无法插入值)。
CREATE TABLE tb_news
(Id int PRIMARY KEY AUTO_INCREMENT NOT NULL, /*Id 作为主键,自增长,非空*/
Content LONGTEXT NOT NULL /*Content类型为长文本,属性非空*/
)default charset=utf8 auto_increment=1; /*设置默认字符集编码、防止中文乱码,自增长幅度为1*/