2018-09-06

数据库的基本操作

#1、开启mysql服务命令

net start mysql

# 2、进入mysql的两种方式

明文进入:mysql -uroot -proot  格式:mysql -u帐号 -p密码

密文进入:mysql -uroot -p 按enter会提示你输入密码(Enter pssword:),此时你写的密码就会显示为***这样。

# 3、查看mysql中所有的数据库(一般在固定的单词命令就会是用大写,这个要习惯,看多了敲多了就认识了)
              前面四个数据库是mysql中自带的,也就是必须的.

SHOW DATABASES;

#4、创建名为test_1的数据库

格式:CREATE DATABASE 数据库名

CREATE DATABASE test_1;

#5、删除名为test_1的数据库

格式:DROP DATABASE 数据库名

DROP DATABASE test_1;

#总结:学习了对数据库的三个操作,1、查看所有数据库 2、创建数据库 3、删除数据库

数据表的基本操作

数据表和数据库还有Mysql三者的关系

mysql中保存了很多数据库、一个数据库中可以保存很多表。

对数据表的增(创建表)删(删除表)改(修改表字段)查(查询表结构)。 注意:这里的操作对象是表,对表的操作也就是表的结构,和表中的字段的操作(字段和记录要分清楚)

前提:表是在数据库下的,所以要先确实使用哪个数据库。

USE test_1;

#1、创建数据表

格式:CREATE TABLE 数据表名(

字段名1  数据类型[列级别约束条件],

字段名2  数据类型[列级别约束条件],

字段名3  数据类型[列级别约束条件]

);     注意:格式不一定需要这样隔着写,完全可以全部写成一行。但是那样写可观性非常差。我这样写只是为了可以看的更清晰。

解释:1、[]中括号中的内容表示可以有可以没有,2、列级别这个“列”一定要搞清楚说的是什么,一张表中有行有列,列表示竖,行表示横 3、约束条件后面会讲到

#1.1、创建没有约束的student表

CREATE TABLE student(

id  INT(11),

name  VARCHAR(12),

age  INT(11)

);

#注释:SHOW TABLES 查询数据库底下的所有表。

#1.2、创建有约束的student表

#六大约束:主键约束、外键约束、非空约束、唯一约束、默认约束、自动增加

#1.2.1:主键约束

PRIMARY KEY(primary key):独一无二(唯一)和不能为空(非空),通俗的讲,就是在表中增加记录时,在该字段下的数据不能重复,不能为空,比如以上面创建的表为例子,在表中增加两条记录,如果id字段用了主键约束。则id不能一样,并且不能为空。一般每张表中度有一个字段为主键,唯一标识这条记录。以后需要找到该条记录也可以同这个主键来确认记录,因为主键是唯一的,并且非空,一张表中每个记录的主键度不一样,所以根据主键也就能找到对应的记录。而不是多条重复的记录。如果没有主键,那么表中就会存在很多重复的记录,那么即浪费存储空间,在查询时也消耗更多资源。

一般被主键约束了的字段度习惯性的称该字段为该表的主键

单字段主键约束

两种方式都可以

CREATE TABLE student(            CREATE TABLE student(

id  INT(11) PRIMARY KEY,          id  INT(11),

name  VARCHAR(12),            name  VARCHAR(12),

age  INT(11)                 age  INT(11),

);                          PRIMARY KEY(id) );

多字段主键约束(复合主键)

这个id和name都市主键,说明在以后增加的插入的记录中,id和name不能同时一样,比如说可以是这样。一条记录为id=1,name=yyy、另一条记录为:id=1,name=zzz。 这样是可以的。并不是你们所理解的两个字段分别度不可以相同。

CREATE TABLE student(              CREATE TABLE student(

id  INT(11) PRIMARY KEY,            id  INT(11),

name  VARCHAR(12) PRIMARY KEY,       name  VARCHAR(12),

age  INT(11)                   age  INT(11),

);                            PRIMARY KEY(id,name) );

1.2.2:外键约束

什么是外键举个例子就清楚了,有两张表,一张表是emp(员工)表,另一张表是dept(部门)表,一个员工属于一个部门,那么如何通过员工能让我们自己他在哪个部门呢?那就只能在员工表中增加一个字段,能代表员工所在的部门,那该字段就只能是存储dept中的主键了(因为主键是唯一的,才能确实是哪个部门,进而代表员工所在的部门,如果是部门名称,有些部门的名称可能是同名。就不能区分了。),像这样的字段,就符合外键的特点,就可以使用外键约束,使该字段只能够存储另一张表的主键。如果不被外键约束,那么该字段就无法保证存储进来的值就一定是另一张表的主键值。

外键约束的特点:

1、外键约束可以描述任意一个字段(包括主键),可以为空,并且一个表中可以有多个外键。但是外键字段中的值必须是另一张表中的主键。

2、这样被外键关联的两种表的关系可以称为父子表或者主从表。子表(从表)拥有外键字段的表,父表(主表)被外键字段所指向的表。

3、子表被外键约束修饰的字段必须和父表的主键字段的类型一样。

注意:一个表中有被外键修饰的字段,就称该表有外键(是“有外键”。而不是“是外键”),并会给该表中的外键约束取一个名称,所以我们常说的这个表有没有外键,指的不是被外键约束修饰的字段名,而是指这个表是否有存在外键约束。也就是说,不能说这个表的外键是xxx(该表中被外键约束修饰的字段名),这种说法是错误的,但是大多数人已经习惯了这样,虽然影响不大,但是在很多时候需要理解一个东西时,会造成一定的困扰。

格式:CONSTRAINT  外键名称  FOREIGN KEY(被外键约束的字段名称)  REFERENCES 主表名(主键字段)

英文解释:CONSTRAINT:约束    REFERENCES:参考

CREATE TABLE tableA
                     (
                     id INT(11),
                     name VARCHAR(22),
                     location VARCHAR(50),
                     PRIMARY KEY(id)
                     );
                     CREATE TABLE tableB
                     (
                     id INT(11),
                     name VARCHAR(22) NOT NULL,
                     deptId INT(11),
                     PRIMARY KEY(id),
                     CONSTRAINT tableA_tableB_1 FOREIGH KEY(deptId) REFERENCES tableA(id)
                     );

解释:tableB中有一个名为tableA_tableB_1的外键关联了tableA和tableB两个表,被外键约束修饰的字段为tableB中的deptId,主键字段为tableA中的id

1.2.3:非空约束

NOT NULL. 被该约束修饰了的字段,就不能为空,主键约束中就包括了这个约束

CREATE TABLE tableA
                     (
                     id INT(11),
                     name VARCHAR(22) NOT NULL,
                     location VARCHAR(50),
                     PRIMARY KEY(id)
                     );

1.2.4:唯一约束

UNIQUE 被唯一约束修饰了的字段,表示该字段中的值唯一,不能有相同的值,通俗点讲,就好比插入两条记录,这两条记录中处于该字段的值不能是一样的。

CREATE TABLE tableA
                     (
                     id INT(11),
                     name VARCHAR(22) UNIQUE,
                     location VARCHAR(50),
                     PRIMARY KEY(id)
                     );

也就是说在插入的记录中,每条记录的name值不能是一样的。

1.2.5:默认约束

Default 指定这一列的默认值为多少,比如,男性同学比较多,性别就可以设置为默认男,如果插入一行记录时,性别没有填,那么就默认加上男

CREATE TABLE table
                     (
                     id INT(11) PRIMARY KEY,
                     name VARCHAR(22) NOT NULL,
                     deptId INT(11) DEFAULT 1111,
                     salary FLOAT
                     );

1.2.6:自动增加

AUTO_INCREMENT 一个表只能一个字段使用AUTO_INCREMENT,并且使用这个约束的字段只能是整数类型(任意的整数类型 TINYINT,SMALLIN,INT,BIGINT),默认值是1,也就是说从1开始增加的。一般就是给主键使用的,自动增加,使每个主键的值度不一样,并且不用我们自己管理,让主键自己自动生成

CREATE TABLE table
                     (
                     id INT(11) PRIMARY KEY AUTO_INCREMENT,
                     name VARCHAR(22) NOT NULL
                     );

2、查询表结构

2.1、查看表基本结构语句

格式1:DESCRIBE 表名/DESC 表名  这两个的功能是一样的,简写了单词describe

DESCRIBE student;

2.2、查看创建表的语句

格式:SHOW CREATE TABLE 表名

SHOW CREATE TABLE student;

这样显示的格式很不好,看不清楚,所以有了下面这个语句

格式:SHOW CREATE TABLE 表名\G

SHOW CREATE TABLE student\G;

3、修改数据表

修改数据表包括:对表中字段的增加、删除、修改。 在这个里面用的关键字为 ALTER

3.1、修改表名

格式:ALTER TABLE<旧表名> RENAME[TO]<新表名>;

将student表名改为student1(改完后在改回来)

ALTER TABLE student RENAME TO student1;

3.2、修改表中的字段名

格式:ALTER TABLE<表名> CHANGE<旧字段名><新字段名><新数据类型>

将student表中的name字段名改为 username

ALTER TABLE student CHANGE name username VARCHAR(30);

解释:这个不仅能改变字段名,还能将字段的数据类型一并修改,也就是说,你可以单纯的只修改字段名,也可以单纯的只修改数据类型,也可以同时一起修改

3.3、修改表中的数据类型

格式:ALTER TABLE<表名> MODIFY<字段名><数据类型>

ALTER TABLE student MODIFY username VARCHAR(20);

解释:只能修改字段名的数据类型,但是其原理跟上面change做的事情一样,这里也有修改字段名的过程,只不过修改后的字段名和修改前的字段名相同,但是数据类型不一样。

3.4、修改字段的排列位置

方式1:ALTER TABLE<表名> MODIFY<字段1><数据类型> FIRST|AFTER<字段2>

解释:将字段1的位置放到第一,或者放到指定字段2的后面

ALTER TABLE student MODIFY username VARCHAR(20) AFTER age;

方式2:ALTER TABLE<表名> CHANGE<字段1><字段2><数据类型> FIRST|AFTER<字段3>

解释:其实是一样的,将是字段2覆盖字段1,然后在进行排序

ALTER TABLE student CHANGE username username VARCHAR(20) AFTER age;

总结

CHANGE和MODIFY的区别?

原理都市一样的,MODIFY只能修改数据类型,但是CHANGE能够修改数据类型和字段名,也就是说MODIFY是CHANGE的更具体化的一个操作。可能觉得用CHANGE只改变一个数据类型不太爽,就增加了一个能直接改数据类型的使用关键字MODIFY来操作。

3.5、添加字段

格式:ALTER TABLE<表名称> ADD<新字段名><数据类型>[约束条件][FIRST|AFTER<已存在的表名>]

解释:在一个特定位置增加一个新的字段,如果不指定位置,默认是最后一个。

ALTER TABLE student ADD sex VARCHAR(11);

3.6、删除字段

格式:ALTER TABLE<表名称> DROP<字段名>;

ALTER TABLE student DROP sex;

3.7、删除表的外键约束

格式:ALTER TABLE<表名称> DROP FOREIGN KEY<外键约束名>

注意:外键约束名 指的不是被外键约束修饰的字段名,切记,而是我们在创建外键约束关系时取的名字。

3.8、更改表的存储引擎

格式:ALTER TABLE<表名> ENGINE=<更改后的存储引擎名>

这个存储引擎目前我自己也不太清楚,虽然知道有哪几种引擎,但是稍微深入一点就不清楚了,所以打算留到日后在说。

4、删除表

4.1、删除无关联表

格式:DROP TABLE<表名>;

ALTER TABLE student;

4.2、删除被其他表关联的主表

这个是比较重要的一点,在有外键关联关系的两张表中,如果删除主表,那么是删不掉的,并且会报错。因为有张表依赖于他。那怎么办呢?针对这种情况,总共有两种方法

1、先删除你子表,然后在删除父表,这样就达到了删除父表的目的,但是子表也要被删除

2、先解除外键关系,然后在删除父表,这样也能达到目的,并且保留了子表,只删除我们不需要的父表。在3.7中就讲解了如何删除外键关系。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容