DOS界面连接数据:
标记选中 右键 复制上
登录数据库:mysql -u用户名(一般是root) -p //mysql -uroot -p
输入密码:
退出数据库:exit;
select version();//打印数据库版本
select user();//打印当前用户
放弃正在输入的命令:\c
显示命令清单:\h
退出mysql程序:\q 或 exit
查看MySQL服务器状态信息:\s;status;
show warnings; // 显示最后一个执行的语句所产生的错误、警告和通知
show errors; // 只显示最后一个执行语句所产生的错误
notice
mysql数据类型
1、整数 :默认用int,再大用bigint ()中的数字和数值列属性zerofill有关
数值列属性
AUTO_INCREMENT
UNSIGNED
ZEROFILL
NULL和NOT NULL
DEFAULT
(1)整型
a)tinyint:很小的整数,范围0~255,有符号的范围-128~127,默认长度4,占1个字节。一般用于年龄
b)smallint:小的整数,范围0~65535,有符号范围-32768~32767,默认长度是6,占2个字节。
c)int:中等大小的整数,范围0~42.9亿,有符号访问-21亿~21亿,默认长度是11,占4个字节。一般用于主键字段id
13245678909
d)bigint:很大的整数,范围0~18446744073709551615,有符号范围:-9223372036854775808~9223372036854775807用于微生物界或天文历法
2、小数:float double DECIMAL
(3)浮点型
a)float(m,d) 精度会有损失
b)double(m,d) 精度会有损失
c)decimal(m,d)m:小数的总位数,d:小数点后面的位数,常用于金融/银行账目,精度不会有损失,推荐使用
3、日期:date 时间 time 日期和时间:DATETIME
(4)时间/日期类型
a)date//日期类型 2017-01-01
b)time//时间类型 11:05:00
c)datetime//日期时间类型 2017-01-01 11:05:00
d)timestamp//时间戳
4、字符串类型
字符串列属性
BINARY
NOT NULL和NULL
DEFAULT
char(10)定长,varchar(10)变长,TEXT文
(2)字符串类型
a)char:定长字符串,浪费资源。 范围0~255
b)varchar:变长字符串,节省空间。范围0~65535,长度值可以是0~65535中的任何一个值。
本.
Value
CHAR(4)
Storage Required
VARCHAR(4)
Storage Required
''
' '
4 bytes
''
1 byte
'ab'
'ab '
4 bytes
'ab'
3 bytes
'abcd'
'abcd'
4 bytes
'abcd'
5 bytes
'abcdefgh'
'abcd'
4 bytes
'abcd'
5 bytes
当定义char时,不管你存入多少字符,都会占用到你定义的字符数,而用varchar时,则和你输入的字符数有关,会多一到两个字节来记录字节长度,当数据位占用的字节数小于255时,用1个字节来记录长度,数据位占用字节数大于255时,用2个字节来记录长度,还有一位来记录是否为null值
c)text//文本类型,范围0~65535。不能有默认长度值
d)enum//枚举类型,enum('man','woman'),一般用于性别
BLOB是一个二进制大对象,可以容纳可变数量的数据即图或视频、声音
完整性约束
1 not null非空约束
2primary key 主键约束
3unique唯一
4auto_increment自增长
5UNSIGNED 不能是负数,从0开始
6DEFAULT默认
7主键(primary key)和外键(foreign key)
主键:帮助MySQL以最快的速度把一条特点的数据记录的位置确定下来。
主键必须是唯一的、非空的
主键应该是紧凑的,因此整数类型比较适合
主键一般不允许有符号(unsigned)
联合主键:两个字段联合起来唯一标识一条记录
外键:引用另外一个数据表的某条记录。
外键列类型要与主键列类型保持一致
外键列应该加上NOT NULL
注:有主外键关系的表,插入数据时要先主表在从表,删除时要先从表在主表,修改表中记录要保证外键要在主表中主键存在
mysql>create table dept(id int auto_increment primary key,bname varchar(20) unique,bmoney int unsigned);
mysql> create table person(pid int primary key auto_increment,name varchar(10) not null,degree varchar(10) default '大专',bid int not null,foreign key(bid) references dept(id));
数据库操作
1、mysql> show databases; 显示所有数据库
2、mysql> create database if not exists student1; 创建数据库
create database demo2 (default) character set utf8/gbk;//设置编码
3、mysql>use student; 打开数据库
4、mysql> rename database student1 to student2;//重命名,现在不能使用,因为不安全,要在资源管理器中打开才可以
5、mysql> drop database student2;删除数据库
6、select database();
表操作
1、mysql> show tables;显示所有表
2 、mysql> create table if not exists student1(xid int primary key auto_increment,name varchar(20),sex varchar(20),degree varchar(20),jobtime date,money decimal(7,2));
//创建表时,先删除表
drop table if exists demo;
create table demo(
);
3、crud:增 删 改 查,CRUD是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)
对表中的数据进行操作:增(insert)删(delete)改(update)查(select)
1)增(insert) insert into 表名(字段名)values(字段值);字符串、时间日期类型都需要加引号
加入所有字段可省略(字段名),(字段值)可以有多个
insert into worker(name,degree,money) select name,degree,money from worker; //插入多条记录
2)查(select)select *(或字段名) from 表名 [where条件];
3)改(update) update 表名 set 字段名1=新字段值1,字段名2=新字段值2,...()where条件;
4)删(delete)delete from 表名 where 条件;delete删除之后存入的数据,id会从被删除的记录ID之后继续递增
清空数据truncate table 表名;auto-increment不会递增
4、查看表结构:desc 表名;
5、删除表:drop table 表名;
6、修改表:
1)修改表名:alter table 旧表名 rename to 新表名;rename table 旧表名 to 新表名
2)添加一个字段(列)alter table 表名 add 字段名 字段类型 [是否为空];
3)删除一个字段alter table 表名 drop column 列名;
4)修改字段名alter table 表名 change 旧字段 新字段 数据类型;
5)修改数据类型(长度,是否为空)alter table 表名 modify 字段名 字段类型 [是否为空];
格式: alter table 表名 action;
Action取值如下:
add 列名 <建表语句> (first | after 列名)
add primary key (列名)
alter 列名 set default 默认值
change (modify) 列名 <建表语句>(first | after)
drop 列名
drop primary key
Drop index index_name;
rename as 新表名
Mysql数据库中的通配符
“%” (百分号) 代表任意长度(长度可以为0)的字符串
“_ “(下横线) 代表任意单个字符
select中的where条件
大于(等于)/小于(等于)
select stid,name,age from student where age >= 20 and age <=25;
select * from student where joinTime >= '2015-01-01' and joinTime <= '2015-12-31';
between... and...限定一个范围
select * from student where age between 20 and 25;//在20到25之间
select * from student where joinTime between '2015-01-01' and '2015-12-31';
and or not
select * from student where age = 20 and sex='女';//并且
select * from student where sex = '男' or sex='其他';//或者
select * from student where sex != '男';//不等于
select * from student where sex <> '男';//不等于
select * from student where not sex = '男';
in 在某个范围内 not in 不在某个范围内
select 字段名 from 表 [where条件][order by 字段名 asc/desc];不写asc或desc,默认是升序
select * from student order by stid desc,age asc;//多个字段排序
宏select 字段名 from 表 [where条件][order by 字段 asc/desc][limit 起始位置,记录数];select * from 表名 limit (当前页-1)*记录数,记录数; 不能和in一起用
模糊查询 like 效率低
select * from student where name like '%明%';//匹配含有'明'的记录
select * from student where name like '明%';//匹配以'明'开头的记录
select * from student where name like '%明';//匹配以'明'结尾的记录
as 别名(不能和关键词冲突)//字段名或表名太长//防止字段名冲突
mysql> select pid as 学号,name as 姓名,degree as 学历,dept.bname from person,dept where dept.id=person.bid;
网友评论