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 tinyint3 unsigned));

                  --tinyint代表数值的最大范围

                 --unsigned代表对应的字段只保存正数

                 --3代表数值宽度,数值不够指定宽度时,在左边填空格补位。数值大于三位时由数值类型决定。由宽度仅显示宽度,存数值的大小由类型决定。

                 --使用关键字ZEROFILL时,填0代替空格补位

                 --当字段值与类型不匹配时,字段值作为0处理

                 --数值超出范围时,仅保存最大/最小值

浮点型 例: create table 表名 gz float9.3));

                 --float代表但精度浮点数

                 --9代表数值总长度

                 --3代表小数点后位数,整数位数则为9-3=6

2.字符类型1-2551-65535

定长   charN

                 --当存储的字符小于存储宽度N时,用空格补足指定的宽度

                 --当存储的字符大于制定宽度时,只存储开头到N值的位数

变长     varcharN

                 --根据存储字符的多少来开辟存储空间,当存储的字符位数大于N值时,值存储开头到N值的位数

*数值类型的宽度是显示宽度,并不能限制字段存储数值的大小,字段存储数值的大小由字段的类型决定。设置宽度的目的,是为里节省内存空间。

3.日期时间类型:

year             yyyy

date           日期     yyyy-mm-dd

time     时间     hhmmss

datetime/timestamp 日期时间    yyyy-mm-dd hhmmss

例:

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 nameage 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.在表内添加字段值,删除字段,删除表

方法1insert   into   数据库名.表名

 values

(字段名1的值,"字段名2的值",字段名,N的值);

                 --在指定库内的指定表内添加各字段内容

 

方法2insert   into   数据库名.表名(字段名1,字段名2,字段名N)

 values(字段名1的值,"字段名2的值",字段名,N的值);

 

                 --在指定库内的指定表内添加指定字段的内容

方法3insert   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   |

 

+------+-----+-----+

 

 

可看到agesex字段自动添加里默认值,指定的值不延续

.表结构的修改

*受表中已有记录的限制,同时会影响表中数据的存储。所有修改表结构最好在表中还没有记录的时候修改。

修改格式: 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  字段名1drop  字段名2  --删除多个字段

3.修改字段类型 modify

alter table 表名modify 字段名 新的类型(宽度)约束条件  --修改单一字段类型

alter table 表名modify 字段名 新的类型(宽度)约束条件,alter table 表名 modify 字段名 新的类型(宽度)约束条件      --修改多个字段类型

例:mysql> alter table yy modifygz tinyint(8);  --将字段gz的类型改为tinyint8

4.修改字段名 change

alter table 表名change  源字段名  新字段名   类型(宽度)  约束条件;

例:mysql> alter table yy changegongzi gz float(8,3)

 --修改了字段名和字段类型