-- 连接服务器 
mysql -hlocalhost -p3306 -uroot -p  
-- 设置字符集 
set names GBK; 
use mydatabase; 
 
 
-- 修改数据库字符集 
alter database mydatebase charset GBK; 
-- 设置student表的字符集 
alter table student charset=utf8; 
 
-- 创建表 
-- mydatabase.可省略 
create table if not exists mydatabase.my_student(name varchar(10),gender varchar(10),number int)charset utf8; 
 
create table my_class(name varchar(10),room varchar(10))charset utf8; 
--  
create table if not exists student(name varchar(10),gender varchar(10),number int)charset utf8; 
 
create table class(name varchar(10),room varchar(10))charset utf8 
 
-- 对整个数据库的操作-- 对整个数据库的操作-- 对整个数据库的操作-- 对整个数据库的操作 
-- 查看自增长变量 
show variables like 'auto_increment%'; 
 
-- 修改自增字段每次增加的值为5 
set auto_increment increment=5; 
 
-- 查看所有字符集 
show character set; 
 
-- 查看服务器默认的对外处理的字符集 
show variables like 'character_set%'; 
 
-- 修改服务器认为客户端数据的字符集为GBK 
set character_set_client=gbk; 
 
-- 修改服务器给定的数据为GBK 
set character_set_results=gbk; 
 
 
-- 查看-- 查看-- 查看-- 查看-- 查看-- 查看-- 查看-- 查看-- 查看-- 查看-- 查看-- 查看-- 查看-- 查看-- 查看-- 查看 
-- 查看数据库 
show databases; 
-- 查看表 
show tables; 
-- 查看以S结尾的表 
show tables like '%s'; 
-- 查看表的所有字段:2种方法 
show columns from student; 
Desc my_primaly1; 
-- 查看student表的所有字段的数据 
select * from student; 
 
-- 去重复查看student表的数据 
select distinct * from student; 
select all * from myprimary;-- 默认为all 
 
-- 查看student表的id=5的id,number,sex,name,gender字段数据 
select id,number,sex,name,gender from student where id=5; 
 
-- 查看数据库创建语句 
show create database `datebase`; 
-- 查看表创建语句-纵向 
show create table my_primaly1\G; 
-- 查看表创建语句-横向 
show create table my_primaly1\g; 
 
 
-- 修改-- 修改-- 修改-- 修改-- 修改-- 修改-- 修改-- 修改-- 修改-- 修改-- 修改-- 修改-- 修改-- 修改-- 修改-- 修改 
 
-- 新增age字段在第一行 
alter table student add column age int first; 
alter table banji add column class int after id; 
 
-- 新增age字段在name字段后面一行 
alter table student add ages int after name; 
alter table student add class int after gender; 
 
-- 修改number字段属性为varchar(20) 
alter table my_primaly1 modify number varchar(20); 
 
-- 修改number字段为char(10),放在id后面一行 
alter table student modify number char(10) after id; 
 
-- 把id字段放在第一行 
alter table student modify id int first; 
 
-- 重命名student表的age字段为sex char(10) 
alter table student change ages sex char(10); 
 
-- 重命名主键时不用加primary key auto_increment,否则提示multiple primary key are defined. 
alter table banji change banji id class int; 
 
-- 新增student表的数据 
insert into student values(2,28,54,'xiaowang',1,'male'),(3,22,86,'xiaohua',2,'female'),(4,24,45,'xiaowang',2,'female'); 
 
-- 新增student表的部分字段数据 
insert into student(number,gender,name,id,age) values('wanyi001','male','tom',5,32),('wanyi002','male','lili',6,33); 
 
-- 修改student表的name=xiaoming的行的gender字段值为female 
update student set gender='female' where name='xiaoming'; 
update banji set name='制药工程'  where id=1 ; 
update banji set name='药剂学' where id=2 ; 
 
 
-- 3-08修改表选项的自增起始值(默认为1),向下无效,向上有效 
alter table my_primaly1 auto_increment =10; 
 
-- 把名字叫李娜的前2个人的学号改为200908020019 
update myprimary set number =200908020019  where name='李娜' limit 2;  
 
-- 把id字段放到第一行 
alter table student change id id int first; 
 
-- 删除-- 删除-- 删除-- 删除-- 删除-- 删除-- 删除-- 删除-- 删除-- 删除-- 删除-- 删除-- 删除-- 删除-- 删除-- 删除 
-- 删除数据库 
drop database mydatabase; 
-- 删除表 
drop table my_class; 
-- 删除所有sex字段不为空的数据 
delete from student where sex; 
-- 删除id>2的所有数据 
delete from banji where id>2; 
-- 删除字段sex 
alter table student drop column sex;  
-- 删空了自增长还是原来的 
delete from my_class; 
-- 清空表数据,重置自增长 
truncate my_class; 
-- 删除主键 
alter table my_primaly modify1 id int; 
-- 下面为错误 
alter table my_primaly modify1 id int primaly key; 
 
 
 
-- 定点型数据 
create table my_decimal(f1 float(10,2),d1 decimal(10,2))charset utf8; 
 
-- 添加数据 
insert into my_decimal values(1234.123456,1234.123456789),(99999999.99,99999999.99); 
 
-- 2-6时间 
create table my_date(d1 datetime,d2 date,d3 time,d4 timestamp,d5 year)charset utf8; 
 
-- 添加数据 
insert into my_date values('2016-5-13 13:42:44','2016-5-13','13:44:38','2016-5-13 13:45:00','69'); 
select * from my_date; 
 
-- 2-9枚举字符串 
create table my_enum(gender enum('男','女'))charset utf8; 
-- 插入数据 
insert into my_enum values(1),(2),(2); 
select * from my_enum; 
 
-- 将字段结果取出来进行0运算,0为照妖镜 
select gender+0,gender from my_enum; 
 
-- 2-10集合字符集,和枚举差不多,但是多选 
create table my_set(hobby set('篮球','足球','排球','网球','台球','棒球','羽毛球','乒乓球','跑步','体操'))charset utf8; 
insert into my_set values('台球,羽毛球'); 
insert into my_set values(8888); 
insert into my_set values(1266); 
insert into my_set values(1023); 
insert into my_set values(4); 
insert into my_set values(2); 
select * from my_set; 
-- 将字段结果取出来进行0运算,0为照妖镜 
select hobby+0,hobby from my_set; 
 
-- 求varchar在utf8和GBK下的最大值 
-- 21844*3+2=65534 
create table myutf8(name varchar(21844))charset utf8; 
-- 32766*2+2=65534 
create table mygbk(name varchar(32766))charset gbk; 
 
-- mysql的记录长度对大为65535个字节 
-- 释放null,把65535字节用完,不写null就是默认为null-- 就是可以为空 
-- 1+ 21844*3+2=65535 
create table myutf81(age tinyint not null,name varchar(21844) not null)charset utf8; 
-- 1+ 32766*2+2=65535 
create table mygbk1(age tinyint not null,name varchar(32766) not null)charset gbk; 
 
-- 证明text字段占用10个字节长度 
-- 10+ 21841*3 +2=65535 
create table myutf8text1(textf text not null,name varchar(21841) not null default 0)charset utf8; 
-- 10+ 32761*2  +1 +2=65535 
create table mygbktext1(textf text not null comment '文本字段',age tinyint not null comment '迷你整型',name varchar(32761) not null comment '变长字符串')charset gbk; 
 
 
 
-- 3-02增加主键 
create table my_primaly1(id int primary key auto_increment comment '逻辑主见:自增长',name varchar(20)not null comment '姓名',number char(10) not null comment '学号')charset utf8; 
-- 修改number 
alter table my_primaly1 modify number varchar(20); 
insert into my_primaly1(name) values('邓丽君'); 
insert into my_primaly1 values(null,'长孙玄奇',200902020012); 
insert into my_primaly1 values(default,欧阳修',200908020018); 
 
insert into my_primaly1 values(1,'圣',200908020013); 
insert into my_primaly1 values(2,'宋',200908020012); 
insert into my_primaly1 values(3,'彭',200908020011); 
insert into my_primaly1 values(4,'刘',200908020014); 
 
 
-- 3-10增加唯一主键 
-- 增加唯一键 
create table my_unique1(number varchar(20) unique comment'学号:唯一,允许为空',name varchar(20)not null)charset utf8; 
 
-- 增加唯一主键,因为它是唯一的,刚好系统没主键,就把他当作主键 
create table my_unique2(number varchar(20)  comment'学号:唯一,允许为空',name varchar(20)not null,unique key(number)charset utf8; 
 
-- 创建表之后增加        唯一键 
create table my_unique3(id int primary key auto_increment,number varchar(20) not null,name varchar(20)not null)charset utf8; 
 
-- 增加唯一键,若已经存在主键,发现没有唯一键,加一个唯一键 
alter table my_unique3 add unique key(number); 
Desc my_unique3; 
 
-- 删除唯一键,唯一键可以有多个 
alter table my_unique3 drop unique key;-- 错误,唯一键有多个 
alter table my_unique3 drop index number;-- 正确,删除number唯一键 
Desc my_unique3; 
 
-- 3-13范式-2NF:不能出现部分依赖,增加类列关键字 
-- 范式-3NF :不能出现传递依赖 
-- 修改表名 
rename table my_primaly2 to myprimary2; 
 
 
 |   
        
 
    
    
    
     
 
 |