MYSQL常用语法

1.登录 mysql -uuser -ppassword [-hhostip]
2.常用命令
show databases;
use databasename;
show tables;
desc tablename;
命令不是大小写敏感的,数据库对象名字是大小写敏感的
3.语法:
创建数据库
create database databasename;
create database databasename default character set utf8;
常用字段类型:
数值类类型:int  bigint decimal(4,2) 
日期类型:date datatime  timestamp  time  year  其中datetime格式为yyyy-MM-dd HH:ss:mm  timestamp格式为yyyyMMddHHssmm
文本类型:varchar(50) text(1000)/text


数值函数:
round(‘3.64’,0)--->4  四舍五入  第二个参数表示要留几位小数
floor(3.64)--->3  取整


日期常用函数:
year(...)
month(...)
dayofmonth(...)
curdate(); sysdate();
last_day(date) 返回该月最后一天
dayofweek(日期)
to_days(日期)  距离0000-00-00多少天
DATE_FORMAT(date,format)
根据 format 字符串格式化 date 值。
下列修饰符可以被用在 format
字符串中: %M 月名字(January......December)
%W 星期名字(Sunday......Saturday)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。
)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%a 缩写的星期名字(Sun......Sat)
%d 月份中的天数, 数字(00......31)
%e 月份中的天数, 数字(0......31)
%m 月, 数字(01......12)
%c 月, 数字(1......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 星期(0......52), 这里星期天是星期的第一天
%u 星期(0......52), 这里星期一是星期的第一天
%% 一个文字“%”
%a - 星期几的简写
%A - 星期几的全写
%b - 月份的简写
%B - 月份的全写
%c - 日期时间 06/12/05 11:15:10
%C - 世纪时间
%d - 一个月的第几号(从 01 到 31)
%D - 同 %m/%d/%y
%e - 一个月的第几号,号为单数则前面加一空格 (从 1 到 31)
%g - 世纪
%G - 世纪 [0000,9999]
%h - 同%b
%H - 24 小时形式的小时(从 00 到 23)
%I - 12 小时形式的小时(从 01 到 12)
%j - 一年中的第几天(从 001 到 366)
%k - 24 小时形式的小时,单数字前面加空格. (从 0 到 23)
%l - 12 小时形式的小时,单数字前面加空格.(range 1 to 12)
%m - 月份 (range 01 to 12)
%M - 分
%n - 换行符
%p - 显示早上还是下午`am' 或 `pm'
%r - a.m. 或 p.m.形式的时间
%R - 24 小时形式的时间
%S - 秒
%t - tab 符号
%T - 同%H:%M:%S
%u - 用 [1,7],表示星期几
%U - 计算是该年的第几个星期,从该年的第一个星期天开始计算
%V - 计算是该年的第几个星期, 从 01 到 53, 第一个星期必须
至少有 4 天在这一年, 星期天作为这个星期的第一天
%w - 用数字的形式表示是星期的第几天, 星期天 为 0
%W - 用数字的形式是该年的第几个星期,从该年的第一个星期一开
始计算
%x - 显示日期:月/日/年
%X - 显示时间:小时:分钟:秒
%y - 不包括世纪的年份
%Y - 包括世纪的年份
%Z - 时区
%% - 输出%


创建表
create table table_name(
filed_name filed type,
...
);
create table table_name select ... from ...;


插入数据:
insert into tablename(columns...) values(....);
load ...


删除数据
delete from table.... where  ....
修改表
update table_name
set filed=value,...
where ....


删除表
drop table tablename;




查询数据
select ....
from ....
where ....
group by....
having ....
order by....   desc asc


组函数
count() sum( ) avg( ) max( ) min( )


表连接
内连接
select .... a.xxx, b.xxx...
from a inner join b
on a.id=b.id;
等价于
select .... a.xxx, b.xxx...
from a , b
where a.id=b.id;


外连接:
select .... a.xxx, b.xxx...
from a left|right outerjoin b
on a.id=b.id;


子查询
select  aaa.xxxx
from (select ...  from ... where ...) aaa;




case [...]
when ....  then ...
when ...  then ...
[else ...]
end


update EMP
set SAL=
(
case
when DEPTNO=10 and JOB='MANAGER' then SAL*1.1
when DEPTNO=20 and JOB='CLERK' then SAL*1.2
when DEPTNO=30  then SAL*1.1
when DEPTNO=40  then SAL*1.2
else SAL
END
);
select ENAME, 
case DEPTNO
when 10 then '后勤部'
when 20 then '财务部'
when 30 then '内务部门'
else '其他部门'
end as dept
from EMP;


limit
从index 0 开始,取5条记录
select * from tablename limit 0,5
从index 5开始,连续取10条记录
select * from table limit 5,10




字符串操作
left('',2) right('',3)
upper(..)
lower(...)
replace('asfdasdf','a','D')
length(str)  str的长度
CONCAT(str1,str2,str3,..)  拼接字符串
like  _ %
regexp 
 
其他:
null不是值   只能用is null  is not null


约束:
非空约束
create table t10(
  id int default 0,
  name varchar(20) not null
);
insert into t10(name) values('aaa');
insert into t10(id) values(1); //error
ERROR 1364 (HY000): 
Field 'name' doesn't have a default value


主健约束&字段自增长
create table t12(
  id int primary key auto_increment,
  name varchar(20) not null

);

相关表emp&dept和练习:

http://download.csdn.net/detail/linchunhua/4007052

你可能感兴趣的:(mysql)