登录mysql mysql -h hostname -u username -p 密码
mac下启动mysql
在终端的本人用户名下的 .bash_profile的文件里添加
export PATH=/usr/local/mysql/support-files/:$PATH path路径
然后终端输入sudo mysql.server (start 启动 restart 重启 stop停止)
\s 查看数据库信息
创建数据库
不带字符编码的 create database 数据库名称 ;
带字符编码的 create database 数据库名称 charset=‘utf8‘;
查看数据库
show databases;
查看一个已经创建的数据库信息
show create database 数据库名称;
修改数据库编码
alter database 数据库名称 default character set 编码方式 collate 编码方式_bin;
删除数据库
drop database 数据库名称;
登录数据库
use 数据库名;
-----------------------------------------
查看表中的列
SHOW COLUMNS FROM 表名;
DESCRIBE 表名;
desc 表名;
查看数据库中的表
show tables;
建表语法:
CREATE TABLE 表名(
字段1 数据类型 约束,
字段2 数据类型 约束,
...
字段n 数据类型 约束
);
查看已建表的信息
show create table 表名;
删除表
drop table 表名;
约束:
表的约束
主键、外键、非空、唯一、默认
如果定义为主键,那它也一点唯一和非空
单字段主键
字段名 数据类型 primary key
多字段主键
字段名 数据类型 (字段名1,字段名2,字段名3,字段名4,字段名5,....字段名n)
非空约束
字段名 数据类型 not null
唯一约束
字段名 数据类型 unique;
默认约束
字段名 数据类型 default 默认值;
表字段的自动增长
字段名 数据类型 auto_increment;
外键约束
FOREIGN KEY
建立在两表或多张表中的关联关系,以保证数据完整性
注意:1.子表参照的值必须在主表被参照字段的值的范围内
2.如果主表中有值被参照,那么主表中的相应记录不能被删除
3.子表的外键参照的列只能是主表的主键列或唯一约束的列
CREATE TABLE class(
cid INT PRIMARY KEY auto_increment,
cname VARCHAR(20)
)ENGINE=INNODB;
CREATE TABLE student(
sid INT PRIMARY KEY auto_increment,
sname VARCHAR(20),
scid INT,
-- FOREIGN KEY (scid) REFERENCES class(cid)
CONSTRAINT fk_scid FOREIGN key(scid) REFERENCES class(cid)
)ENGINE=INNODB;
DROP TABLE student;
DROP TABLE class;
语法1: FOREIGN KEY (外键字段) REFERENCES 主表(主键字段);
语法2: CONSTRAINT 外键名 FOREIGN KEY (外键字段) REFERENCES 主表(主键字段);
(外键名:fk_字段名)
建表后的操作:
修改表名:
alter table 旧表名 rename to 新表名;
修改表里字段名
alter table 表名 change 旧字段名 新字段名 新数据类型;
修改字段的数据类型
alter table 表名 modify 字段名 数据类型;
添加字段
alter table 表名 add 新字段名 数据类型;-----约束
删除字段
alter table 表名 drop 字段名;
修改字段的排列位置
alter table 表名 modify 字段名 1 数据类型 first|after 字段名 2;
查表
select * from 表名;
1.DELETE
语法:delete FROM 表名 [where 条件]
注意:删除都是指删除整条数据
delete删除数据不会彻底删除,会保留表的结构以及数据空间结构
如果删除时不指明条件,表示将整张表数据删除
--删除所有年龄为18岁的学生
DELETE FROM student where sage = 18;
--删除所有年龄为17岁并且学习英语软件专业的学生信息
DELETE FROM student where sage = 17 AND szhuanye = ‘英语软件‘;
DELETE FROM student where sage = 17 OR szhuanye = ‘英语软件‘;
CREATE table test(
tid int PRIMARY KEY auto_increment,
ttt VARCHAR(10)
);
like not like ‘%字符‘ ‘字符%‘ ‘字%符’
INSERT INTO test(ttt) values("a");
INSERT INTO test(ttt) values("b");
INSERT INTO test(ttt) values("c");
DELETE FROM test WHERE tid = 5;
2.TRUNCATE
语法:truncate table 表名;
注意:truncate表示将整张的内容全部删除,保留表结构,释放数据空间
TRUNCATE TABLE test;
3.drop
语法:drop table 表名;
注意:慎用,将整张表全部删除
UPDATE
语法:update 表名 set 列1 = 值1,列2 = 值2... [WHERE 条件]
注意:如果不跟where条件,那么表示将表中的所有数据都进行修改
--修改学生表中的学员的年龄为20岁
UPDATE student SET sage = 20;
--修改学号为5的学生的姓名为‘lucy‘
UPDATE student set sname = ‘lucy‘ WHERE sid = 5;
--修改学号为2的学生的年龄为18岁,班级id改为1001
UPDATE student SET sage =18,cid = 1001 WHERE sid = 2;
INSERT
CREATE TABLE student(
sid INT PRIMARY KEY auto_increment,
sname VARCHAR(10),
sage int
);
不指定字段添加数据,必须为表中的每个字段都添加数据
注意:值的顺序必须和表中字段顺序一致
INSERT INTO 表名 VALUES (值1,值2,...值n);
INSERT INTO student VALUES(101,‘lily‘,20);
指定字段添加数据
注意:在指定字段时,字段顺序必须和建表时一致
INSERT INTO student(sname,sage) values(‘lucy‘,20);
DROP TABLE student;
CREATE TABLE class(
cid INT PRIMARY KEY,
cname VARCHAR(10)
)ENGINE=INNODB;
CREATE DATABASE tt ENGINE=INNODB;
CREATE TABLE student(
sid INT PRIMARY KEY auto_increment,
sname VARCHAR(10),
sage int,
cid INT,
FOREIGN KEY(cid) REFERENCES class(cid)
)ENGINE=INNODB;
DROP TABLE student;
DROP table class;
INSERT INTO class(cid,cname) VALUES (1,"class1");
INSERT INTO class(cid,cname) VALUES (2,"class2");
INSERT INTO class(cid,cname) values(1001,"class3");
INSERT INTO student(sname,sage,cid) values(‘lily‘,19,2);
INSERT INTO student(sname,sage,cid) values("lucy",20,10001);
CREATE TABLE ttt(
ttt int
);
原文:http://www.cnblogs.com/like-me-u/p/5329844.html