美文网首页
数据库2018-6-25

数据库2018-6-25

作者: 清清子衿木子水心 | 来源:发表于2018-06-25 20:10 被阅读0次

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

命令  ===== 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;

相关文章

  • 数据库2018-6-25

    数据库没有诀窍:唯有练习 命令 ===== Linux 前三周的课程: 1、两周的时间讲解前端部分(UI): HT...

  • 初夏的花

    2018-6-25 周一 晴

  • 2018-6-25

    今天读了爱表扬的第四大原则:表扬要循序渐进,表扬要主动性的聚焦孩子的优点,选择性的忽略孩子的缺点。感觉自己为什...

  • 2018-6-25

    今天可以查高考成绩了。 我高中在市里最好的高中读的,我在想现在那些高三毕业的孩子都在干嘛,有人开心有人失落,都在寻...

  • 2018-6-25

    今天想总结一下吴军老师和李笑来老师的金句,这是因为自己一个不好的习惯,在得到上阅读文章有引起注意的地方就用手...

  • 2018-6-25

    儿子说明天去学校考试,这是既是一个圆满的结束,更是一个美好的开始,走过这一天,你就是跨过了鸿沟,你将会越来越轻松!加油

  • 2018-6-25

    日精进:方法总会比困难多,遇事要沉着冷静,害怕与逃避只会让问题加大,选择面对只是开头难,再难都会过去!

  • 2018-6-25

    为什么会时不时迷茫的不知所措?

  • 2018-6-25

    生活总是太多的意外,努力去坚持,去挣钱。不然哪天,碰到什么事情,都没物质条件可以支撑。 太多太多的未知,所以,姑娘...

  • 转载:夫妻和合,人生才能“好”!

    原创:秦东魁 2018-6-25 连载丨第102期 夫妻和合,人生才能“好”! 作者:秦东魁 夫妻和合,人生才能“...

网友评论

      本文标题:数据库2018-6-25

      本文链接:https://www.haomeiwen.com/subject/syhhyftx.html