Mysql数据库的基本应用
一.数据库的基本命令
登录数据库
[root@yeyue ~]# mysql -h127.0.0.1 -uroot-p123456
mysql> show databases;
--查看服务器已有的库
mysql> select database();
--显示当前所在的库
mysql> show tables;
--显示当前库存在的表
mysql> select * from user\G
--换行显示表里的所有记录(*代表字段,带\G表示换行显示)
mysql> use test
--切换到指定库
mysql>desc 表名 --显示当前库内制定表的表结构
二.数据库的添加,删除
mysql> create database yeyue; --新建一个名称为yeyue的库
(苦名具有唯一性
区分字母大小
数据库名 可以使用数字、字母、下划线,但不能是纯数字
不要使用特殊符号
不要使用关键字性)
mysql> drop database yeyue; --删除库yeyue,库内的表将一并删除
三.数据库的各个数据类型
1.数值类型
整型 例:(createtable 表名(age tinyint(3) unsigned));
--tinyint代表数值的最大范围
--unsigned代表对应的字段只保存正数
--3代表数值宽度,数值不够指定宽度时,在左边填空格补位。数值大于三位时由数值类型决定。由宽度仅显示宽度,存数值的大小由类型决定。
--使用关键字ZEROFILL时,填0代替空格补位
--当字段值与类型不匹配时,字段值作为0处理
--数值超出范围时,仅保存最大/最小值
浮点型 例: create table 表名 (gz float(9.3));
--float代表但精度浮点数
--9代表数值总长度
--3代表小数点后位数,整数位数则为9-3=6
2.字符类型1-2551-65535
定长 char(N)
--当存储的字符小于存储宽度N时,用空格补足指定的宽度
--当存储的字符大于制定宽度时,只存储开头到N值的位数
变长 varchar(N)
--根据存储字符的多少来开辟存储空间,当存储的字符位数大于N值时,值存储开头到N值的位数
*数值类型的宽度是显示宽度,并不能限制字段存储数值的大小,字段存储数值的大小由字段的类型决定。设置宽度的目的,是为里节省内存空间。
3.日期时间类型:
year 年 yyyy
date 日期 yyyy-mm-dd
time 时间 hh:mm:ss
datetime/timestamp 日期时间 yyyy-mm-dd hh:mm:ss
例:
mysql> create table yy(
-> name varchar(10),
--变长字符宽度最大为10
-> age tinyint(2) unsigned,
--年龄字符最大长度为2,只有正数
-> syear year,
--出生年
-> birthdat date,
--生日
-> uclass time,
--上课时间
-> metting datetime
--约会时间
-> );
mysql> select * from yy; --查看表yy内的所有内容,*代表所有内容,如查看具体项*处改为具体字段名,如select name from yy;或select (name,age) from yy;
常用的时间函数:
mysql> insert intoyy(syear)values(now()); --添加出生年份通过本机现在日期中提取年份的内容
用2位数给year类型字段赋值时的显示方式
1~69 20xx
70~99 19xx
0 0000
日期时间类型:
datetime 与timestamp 区别
:
--大小不一样
--存储范围不一样
--赋值方式不一样
插入记录时不给timestamp类型的字段赋值时,字段用系统时间给字段赋值
4.枚举类型
单选 enum 只能在列举的范围内选一个(选择项可以通过顺序用数字代替)
set 在列举的范围内选一个或者多个
例:create table yy(
name varchar(10),
age tinyint(2) unsigned,
sex enum("boy","gril"),
likes set("book","music","film","gril")
);
mysql> insert into yy values
->("jim",23,"no","book,film");
insert into yy(name,age,sex) values("jerry",39,"2"); --(选择项可以通过顺序用数字代替)
5.在表内添加字段值,删除字段,删除表
方法1:insert into 数据库名.表名
values
(字段名1的值,"字段名2的值",字段名,N的值);
--在指定库内的指定表内添加各字段内容
方法2:insert into 数据库名.表名(字段名1,字段名2,字段名N)
values(字段名1的值,"字段名2的值",字段名,N的值);
--在指定库内的指定表内添加指定字段的内容
方法3:insert into 数据库名.表名(字段名1,字段名2,字段名N)
values
(字段名1的值,"字段名2的值",字段名,N的值),(字段名1的值,"字段名2的值",字段名,N的值)
--在指定库内的制定表内添加多行字段内容
delete from 表名 --删除指定表名内的所有记录
drop table 表名 --删除指定表
四.数据库表内的约束条件
字段是否允许为空 null 默认允许为空
not null 不允许给字段赋null值
name char(3) not null,
默认值 向表中插入记录时,不给字段赋值时,使用默认值给自己赋值
默认值默认为NULL
age int(3) default 23,
name varchar(3) not null defualt"userpublic",
mysql> create table t1(
-> name varchar(7) not null,
-> age tinyint(2) not null default 27,
-> sex enum("b","g") notnull default "b"
-> );
mysql> desc t1
-> ;
+-------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| name | varchar(7) | NO | | NULL | |
| age | tinyint(2) | NO | | 27 | |
| sex | enum(‘b‘,‘g‘) | NO | | b | |
+-------+---------------+------+-----+---------+-------+
mysql> insert into t1(name)values("dd");
--添加用户dd,其他延续默认值
mysql> insert into t1(name,age)values("dd",33); --添加用户dd,年龄不延续默认值
mysql> select * from t1;
+------+-----+-----+
| name | age | sex |
+------+-----+-----+
| yy | 27 | b |
| dd | 27 | b |
| dd | 33 | b |
+------+-----+-----+
可看到age,sex字段自动添加里默认值,指定的值不延续
五.表结构的修改
*受表中已有记录的限制,同时会影响表中数据的存储。所有修改表结构最好在表中还没有记录的时候修改。
修改格式: alter table 表名 动作;
1.添加字段 add
add 字段名类型; --必有项
add 字段名类型(宽度) 约束条件;
add 字段名 类型(宽度)约束条件,add 字段名 类型(宽度)约束条件–修改多条记录
*默认新添加的字段都追加在已有字段的下方
first 把新字段添加在已有字段的首位
例:alter table t20 add stu_num varchar(4) not nullfirst;
after 字段名 把新字段添加在已有字段的下方
例:alter table t20 add birthday date not null after sex;
2.删除字段drop
alter table 表名drop 字段名; --删除单一字段
alter table 表名 drop 字段名1,drop 字段名2; --删除多个字段
3.修改字段类型 modify
alter table 表名modify 字段名 新的类型(宽度)约束条件 --修改单一字段类型
alter table 表名modify 字段名 新的类型(宽度)约束条件,alter table 表名 modify 字段名 新的类型(宽度)约束条件 --修改多个字段类型
例:mysql> alter table yy modifygz tinyint(8); --将字段gz的类型改为tinyint(8)
4.修改字段名 change
alter table 表名change 源字段名 新字段名 类型(宽度) 约束条件;
例:mysql> alter table yy changegongzi gz float(8,3)
--修改了字段名和字段类型