注意事项
- mysql的注释,刻意用“/…/”也可以用两个横杠”–”
- 运行mysql脚本 ,末尾没有分号
source txt.sql
博客内容若有错误,请多多指教!
数据类型
-------------字符型--------------------
char(20) --最长为255
varchar(20) --varchar最长为65536
-------------整型--------------------
tinyint --一个字节
smallint --两个字节
mediumint --3个字节
int --4个字节
bigint --8个字节
-------------浮点型--------------------
float(p,s) --s为指定的精度,p为长度
double(p,s)
-------------时间数据--------------------
data /* YYYY-MM-DD */
datatime /* YYYY-MM-DD HH:MI:SS */
timeamp /* YYYY-MMM-DD HH:MI:SS 与上面不同的是最多到2037年*/
year /* YYYY */
time /* HHH:MI:SS*/
创建表
create table mytable;
primary key --主键
primary key(mykey1,mykey2...) --一次设置多个主键
not null --变量不为空
foreign key (mykey) references myOtherTable(mykey)
修改表
alter table mytable --明确要对哪个表修改
add column 新列名 数据类型 完整性约束
add 表级完整性约束
drop column 列名 cascade|restrict
drop constraint 完整性约束名 restrict|cascade
modify alter column 列名 数据类型
- 例1. 向student表增加”入学时间”列,其数据类型为日期
alter table student add s_entrance date
- 例2. 将表SC表的分数列grade的数据类型修改为smallint
-- 注意mysql需要加modify命令
alter table sc modify column 列名 数据类型
- 列3. 增加课程表名称必须去唯一值得约束
alter table course add unique(cname);
删除表
drop table 表名 restrict|cascade -- mysql无法删除啊~~
插入、更新、删除
-- 不可以缺少字段,对于不同版本可能不同,刻意试试
insert into table 表名(col1,col2...) value(v1,v2...)
-- 更新数据,表名前面并没有table关键字
update 表名 set col1=myvalue,col2=myvalue...
-- 删除,若没写where则全部删除
delete from table student where ssex="男"
查询
单表简单查询
-- 2017-sage是简单的运算作为查询结果,若不取列名,则新列名
-- 为2017-sage,也可以取列的别名如birth即改变列表标题
select sname,2017-sage from student;
slect sname,2017-sage birth from student;
--大小写字母表示结果lower和upper
select lower(sdept) from student;<