数据库2018-6-25

数据库没有诀窍:唯有练习

命令  ===== Linux

前三周的课程:

1、两周的时间讲解前端部分(UI):

HTML

css

JavaScript(js)

jQuery

2、数据库(关系型数据库+非关系型数据库(nosql))

MySQL:

mongodb:

redis:

=================================================================

mysql:

典型关系型数据库(relational database)

=================================================================

1、安装MySQL

window:

.msi

.zip

修改my.ini

bin添加到path

以管理员身份打开cmd命令提示符,将路径切换到bin下去,

mysqld install/remove

net start/stop mysql

Linux

使用应用仓库安装

CenterOS|redhat:

sudo yum  install mysql-sever mysql

ubuntu:

sudo apt|apt-get install mysql-server

sudo apt|apt-get install mysql-client

sudo service mysql restart/start/stop/status

从官网下载的源代码:

2、MySQL的使用

MySQL 典型C/S架构的软件 client/server

进入mysql:

mysql -u用户名 -p密码 -h主机ip或者域名 -P端口

退出mysql:

exit|quit|\q|Ctrl+C

3、mysql远程登录:

1、以管理员身份进入mysql

update mysql.user set host='%' where user='root';

2、修改/etc/mysql/mysql.conf.d/mysqld.cnf

bind-address 注释掉

3、重启服务

4、mysql的一些常规操作

show databases like pattern; # 显示当前所有的数据库

use dbName; # 进入到对应数据库中

show tables like pattern; # 显示当前数据库所有表

desc\describe tableName; # 描述表的结构

show columns from t_user; # 描述表的结构

select database(); # 显示当前所在的数据库

select now(); # 返回当前时间

select version(); # 返回当前数据库的版本信息

5、SQL标准的讲解

|-- sql

|-- DDL(data definition language)数据定义语言

create drop alter show

|-- DML(data manipulation language) 数据操作语言

CRUD  update delete insert select

|-- DQL(data query language)数据查询语言

select

|-- DCL(data controll language)数据控制语言

grant invoke

6、创建数据库

创建数据库:

create database dbName [[default] charset 'utf8']

删除数据库:

drop database dbName;

修改数据库:

alter database dbName default charset gbk;

查看数据库定义:

show create database dbName;

7、mysql的数据类型

整形:

tinyint 一个字节

smallint 两个字节

mediumint 三个字节

int 四个字节

bigint 八个字节

浮点型数据:

float 四个字节

double 八个字节

decimal(10,5) 做精确运算时使用

文本型:

char(lenght)

varchar(length)

text

二进制:bit,binary,Blob

日期:

year ,month,day,time,date,datetime,timestamp 游标戳

枚举:enum()

8、表的常见操作

表的创建:

create table tName(

field1 int primary key auto_increment,

gender varchar(20) not null

) default charset utf8 engine=innodb/mysiam

查询表创建的信息:

show create table tname[/G];

对表结构的修改:

修改表名:

rename table oldTableName to newTableName;

alter table tableName rename to new TableName;

修改表的属性(字符集|引擎……):

alter table tableName charset=gbk

alert table t_test charset='gbk';

修改表的字段:

alter table tName change/modify/drop/add field

增加一个新的字段:

alter table tName add newColumn condition 位置

alter table t_test add nickname varchar(50) not null unique

修改一个字段的名称

alter table tName change nickname test varchar(30) default 'liushuaige' first;

修改一个字段的类型

alter table tName modify test varchar(80) default 'hehe' after age;

删除一个字段

alter table t_test drop test;

9、CRUD(C:create 增加 R:retrieve 查询 U:update 修改 D:delete 删除):                                     

insert into

tableName(field1,field2,……,fieldn)

values(val1,val2,……,valn);

update tableName set field1=newV[,……,fieldn=newV]

where condition;

delete from tableName where condition;

truncate [table] tableName; #慎用

select *[field1,field2,……,fieldn] from table [where condition]

10、单表的条件查询

关系运算符: > <  >= <=  =  != <>

逻辑运算符:and(并且) or(或者) not

空和非空的判断: is null is not null

between and  in  not in

排序:

order by field1 [asc|desc] [,field2 [asc|desc]]

分组:

group by field [having condition]

分页:

limit offset, pageSize;

11、编码问题

utf8

gbk

latin1

……

校对集:

_bin: binary 区分大小写

_cs: 区分大小写

_ci: 忽略大小写

=============================================================

今天目标:

分表:

多表关联查询:

外键:

视图:

索引:

面试题:

1、说说你所知道的mysql的数据库引擎有哪些?

2、innodb、myisam 两个引擎的区别?

=============================================================

在设计数据库时,一般而言要求遵循数据库三范式(3NF)

1、设计的字段具有原子性(字段不可分割)

2、每天记录具有唯一性  主键

3、外键

大量数据冗余 

数据冗余:在一个数据集合中重复的数据称为数据冗余.

数据冗余技术是使用一组或多组附加驱动器存储数据的副本,这就叫数据冗余技术。

create TABLE emp (

id int PRIMARY KEY auto_increment,

name varchar(50) not null,

gender char(10) DEFAULT '男',

tel  varchar(20) DEFAULT '110',

address varchar(255),

qq varchar(30),

age int DEFAULT 18,

deptId int,

# 添加外键约束

constraint foreign key(deptid) references dept(id) on delete set NULL  on update

)

外键 foreign key 完成外键的约束

CONSTRAINT FOREIGN key(新表的字段) REFERENCES  主表(引用字段)

create table dept(

id int PRIMARY KEY auto_increment,

name varchar(50) not null UNIQUE,

describle text

)

# 多表管理查询

# 多表管理查询有五种连接方式

# 1、交叉查询(了解)

select *

from dept,emp

SELECT * from emp cross join dept;

# 笛卡尔积现象

 内连接

SELECT *

FROM emp,dept

WHERE emp.deptid = dept.id                             

SELECT e.*,t.name as deptname, t.describle deptdesc from emp as e inner join dept t on (e.deptid = t.id)

外连接

 外连接分为左外连接和右外连接

SELECT e.*,d.name deptname, d.describle deptdesc FROM emp e LEFT JOIN dept d on(e.deptid=d.id);

SELECT e.*,d.name deptname, d.describle deptdesc FROM emp e RIGHT OUTER JOIN dept d on(e.deptid=d.id);

# 自然连接 真正的开发中用不到

SELECT * from emp natural join dept;

 自连接

# 查询用户id为1的部门名称

SELECT name

from dept

WHERE id = (SELECT deptId from emp where id=8);


子查询

将一个查询结果作为条件的一部分写入到第二个sql中

如 姓名为zs的用户的部门名称:

Select deptname from dept where deptid = (select deptid from emp where empname = ‘zs’)


SELECT d.name

from emp e ,dept d

WHERE e.deptid=d.id and e.id = 1

SELECT d.name

from emp e INNER JOIN dept d on(e.deptid=d.id)

where e.id = 1;










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

推荐阅读更多精彩内容