MYSQL:
对大小写不敏感
between 值1 and 值2; |
其中包括两端的值 |
比较预算符 |
前后不可加函数限制只能使用子查询 |
auto_increment |
主键自增 |
创建表格只有int |
后面可以不加字符长度限制 |
status; |
查询端口号 |
select vision(); |
查询端口号 |
create database world; |
创建数据库 |
drop database database_name; |
删除数据库 |
drop index; |
删除索引 |
source C:/world.sql; |
构建数据库表 |
desc<table name>; describe table_name; |
查看指定表的创建语句 |
show tables; |
查询数据库中的表 |
net start mysql |
启动服务 |
net stop mysql |
停止服务 |
create table 表名( 属性名 数据类型[完整性约束条件], 属性名 数据类型[完整性约束条件], ...... 属性名 数据类型primary key()); |
创建表格 |
option name=option value |
创建表的属性 |
方法一:rename table tablename1 to tablename2; 方法二:alter table tablename1 rename tablename2; |
该表名 |
show table status; |
显示表的属性 |
alter table table_name engine=innodb; |
修改表格样式 |
SHOW global variables like '%engine%'; |
查看mysql新生成表的默认类型 |
alter table 表名 add primary key; alter table student9 add primary key (cno) |
添加主键 |
auto_increment auto_increment='100' |
主键自动增加一,默认值是1 |
alter table table_name drop primary key ; |
删除主键 |
lter table student7 add foreign key student7(ano) references student(ano); |
添加外键 |
|
|
二. 快捷键
注释行快捷键 |
CTRL + / |
取消注释行 |
CTRL + SHIFT + / |
增加缩进 |
TAB |
减少缩进 |
SHIFt + TAB |
运行 |
CTRL + R |
运行已选择的 |
SHIFt + CTRL + R |
从这里运行一个语句 |
F7 |
停止 |
CTRL + T |
查找下一个 |
F3 |
查询编辑器 |
CTRL + E |
下一个窗口 |
CTRL + TAB |
运行: |
F9 |
逐过程: |
F8(运行暂停,恢复运行) |
逐语句: |
F7 |
跳过: |
shirft+F7 |
alter tabletable_name add 约束条件(columnname);
修改列名 |
alter table 表名1 change column 旧列名 新列名 varchar(20); |
添加列: |
alter table 表名 add 列名 数据类型; |
删除列: |
alter table 表名 drop 列名 数据类型; |
删除某行: |
delete from 表名称 where 列名称 = 值 eg: delete from student7 where ano=2; |
删除所有行: |
delete from 表名称 或者 delete*from 表名称 eg: delete from student7; |
查看表结构: |
desc 表名;show columns from 表名; |
查看见建表语言: |
show create table 表名; |
创建表的备份附件: |
select into :从一个表中选取数据插入另一个表中,用于表的备份或者对记录进行归档 select*into new_table_name[IN externaidatabase] from old_tablename; select column_names into new_table_name[IN externaidatabase] from old_tablename; |
插入记录insert: |
insert into 表名1(表1列1,表1列2)select 表2列1,表2列2 from 表2 where 条件; |
查询插入 |
insert into 。。。。。。select。。。。。 insert into student(sno ,cno) select sno,cno fromstudent2 where sno in (4,5); |
子查询写入 |
insert into 表名 列名1=值1,列2= 值2,,,where; |
更新记录 |
update....set.... eg: update student set sname='小明',sex='女'where sno=5; |
查询select: |
eg: select *from student where age not between 50 and 65;(包含两端) |
select语句 |
指定从哪些表中获取数据from<table-specification> |
|
distinct:消除重复记录行select distinct<expressionlist> |
|
where:只返回满足特性条件的记录航(过滤器)where<condition> |
|
order by:按照表达式列表排列顺序记录 order by<ordering-specification> |
desc |
降序排列 |
asc |
升序排列 |
order by tg asc,tno desc |
;按照第一序列排列,再按照第二序列排列。 |
limit: |
返回特定部分的数据,而不是所有结果limit<rowcount> |
group by语句: |
select customer,sum(orderprice) from customer group by 列名1,列名2; |
having |
设置分组条件 select customer,sum(orderprice) from customer group by 列名1 having sum(orderprice)>2000; |
外键 一个表可以有多个外键 |
[constraint symbol]foreign key [id] (index_col_name, ...)references tbl_name (index_col_name, ...)[on delete {restrict\cascade\set null\no action\set default}] |
跨表匹配inner join可用 与两个没设置外键的表格: |
select column(s) from tablename1 inner join tablename2 on tablename1.column=tablename2.column innner join tablename3 on tablename1|2.column=tablename3;但是用on可以后面加其他的条件筛选,on作为表的条件,where作为结果的条件; |
left join: |
即使右表中没有匹配,也从左表返回所有的行 ,左表所有记录 |
right join: |
即使左表中没有匹配,也从右表返回所有的行,右表所有记录 |
full join: |
只要其中一个表中存在匹配,就返回行,有些数据库中显示full outer join |
子查询: |
通过相同的列进行表间或者表内查询 ,两个表有没有外键连接都行 select sno from student where ano=(select ano from grade where result='20'); |
使用union联合查询 |
不允许重复值:select...union select.... 允许重复值:select....union all select.... |
输入用户名密码 |
shell>mysql -h localhost -p -u myname |
root账户链接服务器: |
shell>mysql -u root -p13465 -P 8080 -h 10.84.62.110 |
退出mysql,可使用 |
\q、quit()、exit(): mysql>\q |
mysql客户端 |
上下键循环调出历史命令,左右键移动光标,del键删除当前光标处字符,esc键取消当前输入内容 |
算术运算符: |
x+y,x-y, 乘法x*y 除法x/y ,整除x DIV y 4DIV3 ,取模x%y 4mod3 |
比较运算符: |
x=y 结果为true ; x and y x和y都成立的时候为true; x or y x和y成立一个值则为true; ; not y y是false 则结果为true. x<=>y 支持null值的比较 x<y x<=y x>y x>=y |
BETWEEN ... AND |
是数值、文本或者日期。 包左不包右。 |
like搜索某种模式 |
通配符‘%'匹配任意字符 通配符‘_’表示一个字符 |
x rlike 'regular expression'或者x regexp 'regular expression' |
正式表达式true可以匹配url,ip地址、电话号码,以及邮政编码等更为复杂的模式 where name rlike'nat';where name rlike '*&^%*new<>';
|
<>all,!=all,not in ,in,any,all,some: |
any或者some 其中的一个 ,all全部。any与in的运算方法相似,=all是不存在的,,!=all(或<>all)与not in 相似的 |
我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式): |
SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')AND LastName='Carter' |
eg:统计<学生信息表>,统计每个班级中每种性别的学生人数,并按照班级排序
Selectcount(*) as ‘总人数’,sex,classfrom student group by sex,class order by class asc;
统计<学生选修信息表>,显示有两门以上课程不及格的学生的学号(这个表格中没有主键的)
Select sno from gradewhere result>60 group by sno having count(*)>2;
查询空值
where XX ='NULL' |
XX字段存的值就是NULL这四个字符, |
where XX is null |
XX字段什么也没存,这是数据库的判断语法, |
where isnull(XX) |
XX字段什么也没存,这是界面开发语言的判断语法 |
函数
均值avg() |
eg : select avg(orderprice) as orderaverage form orders; |
求和sum() |
eg: select avg(orderprice) from orders; |
返回匹配条件的行数count() |
eg: select count(orderprice) from orders where orderprice>1000; |
count(*) |
返回匹配条件的记录数 |
返回文本字段中的长度len()orlength() |
select length() from student; |
把字段的值转换为大写 |
ucase() |
把字段的值转换为小写 |
lcase() |
从文本字段中提取字符 |
mid(列表,起始位置,长度); select mid(customers,1,3) from orders; ali select mid(customers,1) from orders; alice select mid(customers,3) from orders; ice |
|
|
把数字字段舍入指定的小数数位 |
round() select round(score,2) from teacher; |
函数用于对字段的显示进行格式化 |
format() select format(X,D) from teacher |
查询选择所有 date_col 值在最后 30 天内的记录。 |
mysql> SELECT something FROM tbl_name WHERE TO_DAYS(NOW()) – TO_DAYS(date_col) <= 30; |
to_days(date) mysql>>select to_days('1992-08-15'); |
返回从零年开始的天数,,反函数: |
mysql>>select from_days(729669); |
返回年份,但是不考虑历法改变所遗失得日期 |
select dayofweek('1992-08-15'); |
返回 date 的星期索引(1 = Sunday, 2 = Monday, … 7 = Saturday)。 |
select weekday('1992-08-15'); |
返回 date 的星期索引(0 = Monday, 1 = Tuesday, … 6 = Sunday) |
select dayofmonth('1992-08-15'); |
返回一个月的第几天 |
select dayofyear('1992-08-15'); |
返回一年中的第几天 |
select month('1992-08-15'); |
返回一年中的第几个月 |
select quarter('1992-08-15'); |
返回一年中的第几个季度 |
select week('1992-08-15'); |
返回一年中的第几周 |
select week('1992-08-15',1) select week('1992-08-15',0);
|
;#0(偶数) 一周以星期日开始,返回值范围为 0-53 ;1(奇数) 一周以星期一开始,返回值范围为 0-53 |
select yearweek('1992-08-15'); |
返回年份+第几周。可以用mid限制输出结果 |
类似的函数: |
小时hour(),分钟minute(),秒second(),period_add(9801,2)增加2个月到1998年1月,返回199803 |
DATE_FORMAT(date,format)
%M |
月的名字 (January..December) |
%W |
星期的名字 (Sunday..Saturday) |
%D |
有英文后缀的某月的第几天 (0th, 1st, 2nd, 3rd, etc.) |
%Y |
年份,数字的,4 位 |
%y |
年份,数字的,2 位 |
%X |
周值的年份,星期日是一个星期的第一天,数字的,4 位,与 ‘%V’ 一同使用 |
%x |
周值的年份,星期一是一个星期的第一天,数字的,4 位,与 ‘%v’ 一同使用 |
%a |
缩写的星期名 (Sun..Sat) |
%d |
月份中的天数,数字的 (00..31) |
%e |
月份中的天数,数字的 (0..31) |
%m |
月,数字的 (00..12) |
%c |
月,数字的 (0..12) |
%b |
缩写的月份名 (Jan..Dec) |
%j |
一年中的天数 (001..366) |
%H |
小时 (00..23) |
%k |
小时 (0..23) |
%h |
小时 (01..12) |
%I |
小时 (01..12) |
%l |
小时 (1..12) |
%i |
分钟,数字的 (00..59) |
%r |
时间,12 小时 (hh:mm:ss [AP]M) |
%T |
时间,24 小时 (hh:mm:ss) |
%S |
秒 (00..59) |
%s |
秒 (00..59) |
%p |
AM 或 PM |
%w |
一周中的天数 (0=Sunday..6=Saturday) |
%U |
星期 (00..53),星期日是一个星期的第一天 |
%u |
星期 (00..53),星期一是一个星期的第一天 |
%V |
星期 (01..53),星期日是一个星期的第一天。与 ‘%X’ 一起使用 |
%v |
星期 (01..53),星期一是一个星期的第一天。与 ‘%x’ 一起使用 |
%% |
一个字母 “%” |
mysql> SELECTDATE_FORMAT(’1997-10-04 22:23:00′, ‘%W %M %Y’);
-> ‘Saturday October1997′
mysql> SELECTDATE_FORMAT(’1997-10-04 22:23:00′, ‘%H:%i:%s’);
-> ‘22:23:00′