Mysql基本操作

Mysql基本操作

输入mysql -u root -p登陆,会要求你输入密码,第一次登陆没有密码,按回车即可

show databases; 打印数据库里有多少个数据库

use mysql; 进入数据库

show tables; 查看table

desc user; 查看表的结构
show columns form user; 查看数据库
create database lscdb; 创建数据库
show create database lscdb; 查看数据库字体
create database lscdb charset utf8; 并设置为utf8
mysql> create table student(创建一个表
-> id int auto_increment, 递增
-> name char(32) not null,
-> age int not null,
-> register_date date not null,
-> primary key (id));


drop database lscdb; 删除数据库

 

插入数据
insert into student (name,age,register_date)values("lsc",20,"2017-6-13");
查询
select * from user; 查看所有的数据
select * from student limit 2;查看前两条数据
select * from student limit 2 offset 1;从第一条往后查
select * from student where id >2; 加条件 and 和
select * from student where register_date like "2016-02%";模糊查询like 后面用%代替
select * from user\G: 竖着 可读
select User from user; 查看有多少个用户
show grants for lsc; 查看对数据库的权限
修改
update student set name="lph",age=33 where id=4;
删除 
delete from student where name="lph";
排序
select * from student order by id desc; desc:升序 asc:降序
统计
select name,count(*) from student group by name; 统计数量
select name,sum(age) from student; 
 select name,sum(age) from student group by name with rollup; 统计/NULL总和
select coalesce(name,"总和"),sum(age) from student group by name with rollup; 把NULL 换一个名字

修改表字段 alter table 
增加字段 
alter table student add sex enum("M","F");
删除字段
alter table student drop sex;
修改字段
alter table student change age ages char(32) not null default "X";

添加主键:

alter table 表名 add primary key;

删除主键:

alter table 表名 drop primary key;

添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段)references 主表(主键字段)

删除外键:alter table 表名 drop foreign key 外键名称


创建一个用户
use mysql;
grant all on +名字.* to 'lsc'@'%'identfied by 'cong0213';
gtant 授权 ALL 所有 on .* 下面所有的表 to 'lsc'@'%' lsc:用户 %:所有的机器 idertified by 'cong0213' 密码

mysql> grant select,insert,update,delete,create,drop
-> on tutorials.*
-> to 'lsc'@'%'
-> identified by '123456';

select:查
insert:插入
update:修改
delect:删除
create:创建
drop: 删除
insert into user

grent select,insert,update,delete,create,drop

外键

 

在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。
外键的使用条件:
1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持);
2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立; 
3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以;

 

外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作;

 

CREATE TABLE dage (

   id int(11) NOT NULL auto_increment,

   name varchar(32) default '',

   PRIMARY KEY  (id)

 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

 

 CREATE TABLE xiaodi (

   id int(11) NOT NULL auto_increment,

   dage_id int(11) default NULL,

  name varchar(32) default '',

  PRIMARY KEY  (id),

  KEY dage_id (dage_id),

  CONSTRAINT xiaodi_ibfk_1 FOREIGN KEY (dage_id) REFERENCES dage (id)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

 

 

 

 

定义主键和外键主要是为了维护关系数据库的完整性,总结一下:
1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。

身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。 
2.外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。

比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。

  主键在物理层面上只有两个用途:

        1. 唯一地标识一行。

        2. 作为一个可以被外键有效引用的对象。

  基于以上这两个用途,下面给出了我在设计物理层面的主键时所遵循的一些原则:

        1. 主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。

        2. 主键应该是单列的,以便提高连接和筛选操作的效率。

     3. 永远也不要更新主键。实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。

  4. 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。

        5. 主键应当有计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了惟一标识一行以外的意义。一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。

 

 

posted @ 2018-01-24 10:39  换季  阅读(135)  评论(0编辑  收藏  举报