DAY1:MySQL基础

一.MySQL服务开关

方式一:

       右键我的电脑->管理à服务和应用程序->服务  找到mysql    打开和关闭

       services.msc 可以替代找到服务的过程     找到mysql    打开和关闭

方式二:

       Net  start   mysql服务的名字

       Net  stop   mysql服务的名字

二.服务器常用命令

1.进入服务器  mysql –u用户名 –p密码 –h空格访问的ip –P端口号(默认3306)

   本机:  localhost或127.0.0.1  不写  -h 默认本机   不写-P  默认3306  

   一般使用mysql –u用户名 –p   回车后 输入密码  这样 安全。

    \c 当输入错误时  用\c不会报错

    Dos窗口快捷设置本次编码 set names gbk;

2.常用的cmd窗口命令

查看服务器下有哪些库:show databases     注意information_schema  和mysql不要去动 

添加一个库: create database 库名 

删除一个库:drop database 库名

重命名一个库:不能

进入一个库:use 库名 

查看当前库有哪些表:show tables

创建一个表:create   table  表名(字段名1 类型, 字段名2 类型,……. 字段名n 类型)

示例:

create table student(
	stuId smallInt,
	age smallInt,
	stuName varchar(20),
	stuHeight float(3,2),
	birthday datetime
)default charset=utf8

查看表的详细信息: desc  表名

删除表:drop table  表名

修改表名:rename  table  老表名 to 新表名

给表添加一个字段alter table 表名 add column 字段名 字段类型

更改字段的类型:  alter table 表名 modify column 字段名  新类型

最简单的查询表内容:  select * from 表名(存在当前库下全表全字段查询

往表里添加内容: insert into 表名  values(根据字段的顺序添加值)

修改表数据:update 表名 set columnName1=1, columnName2=2  where 条件判断

删除数据delete from 表名  where 条件判断

示例代码:

插入
insert into 表名 (字段名1,字段名2,.....) values (值1,值2,值3,......);
insert into 表名 values (值1,值2,值3,......);//默认为所有的字段插入数据
insert into student values (3,18,'猪八戒',1.66,'2010-10-02 18:35:35');
insert into student(stuId,stuHeight) values(4,1.98);
查询
select * from 表名
select * from student;

告诉服务器编码方式set names 编码集名

三.数据库数据类型

1.通用属性(极个别不能用): 

       Not null :  该列不允许不插入值,

       Default:  当插入数据没有添加该列的值的时候的默认值.

       Not null default 值:    当没有插入的该列的值,可以插入成功,值为默认值。

2.数值型:

整型:

类型

字节

范围(有符号,包含整数或负数)

范围(无符号,都是不小0的数)

Tinyint(M)unsigned zerofill

1

8

-128~127-2^7~2^7-1

0-255(2^8-1)

Smallint

2

16

-32768~32767 (-2^15~2^15-1)

0-65535

(0~2^16-1)

mediumint

3

24

正负800多万(-2^23~2^23-1)

1600多万

(0~2^14-1)

Int

4

32

正负21E(-2^31~2^31-1)

0~42E(0~2^32-1)

Bigint

8

64

(-2^63~2^63-1)

(0~2^64-1)

Tinyint讨论:

[0][0][0][0][0][0][0][0]   à0

[1] [1] [1] [1] [1] [1] [1] [1]  ->2^0+2^1+2^2….+2^7=255

最高位为符号位    剩余7

-[1] [1] [1] [1] [1] [1] [1]~+ [1] [1] [1] [1] [1] [1] [1]

-(2^7-1)~+( 2^7-1)   à-127~127à -128~127(正负0没意义,将多出来的空间给-128)

数据库的整型是有符号的。 

Tinyint(M)  unsigned  zerofill

Unsigned使该列的值无符号

(M)zerofill 同时使用才有意义 

浮点型:

类型

范围

字节数

Float(M,D)

MD有关系

4

Double(M,D)

MD有关系

8

M:精度  除去小数点,数字相加的和,限制float的范围。(及整数部分位数加小数部分位数总和)

D:标度  代表小数点后面的可容纳小数个数。(即小数位数 )

示例:Float(5,2)     ->范围 有符号  -999.99 ~999.99   无符号0~999.99

特殊:

      当float在定义的时候没有声明(M,D)时,在where 查询直接 用字段= float的值是查不到数据的,而要使用like去找。

       (了解)在范围内,但是小数部分超过了标度的长度,标度的后一位会四舍五入。注意对5的处理,不入:0 1 3 5 7  :   2 4 6 8 9

定点型:

类型

范围

字节数

Decimal(M,D)

MD有关系

M+2

MD float的意义一样。

不写(M,D)  默认 (10.0)

float:浮点型,含字节数为432bit,数值范围为-3.4E38~3.4E387个有效位)

double:双精度实型,含字节数为864bit数值范围-1.7E308~1.7E30815个有效位)

decimal:数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个有效位)

字符型:

类型

所占空间

宽度取值(M的取值范围)

利用率

Char(M)

M个字符

0~255

小于等于100

Varchar(M)

实际字符+1-2个字节

0~65535

小于100

速度上,char快于varchar.

M代表宽

Char  定长字符串

Varchar 变长字符串

Char 不写M默认1

Varchar不写会报错。

利用率:

       宽度定义  M

       实际传入  N

       Char  N/M     N可以等于所以利用率可以达到100%

       Varchar N/( N+(1+2)字节)   N可以等于永远不能达到100%

关于选择使用:

       四字成语字典,省份证,   朋友圈,      用户昵称

       Char(4)        Char(18)   Varchar(150)   char(6)可以,速度快,资源浪费较少  varchar(6)也可以,牺牲速度,节省资源。

时间类型:

类型

范围

Year

1901-2155

Time

-838:59:59''838:59:59

Date

1000-01-01~9999-12-31

Datetime

DateTime结合

Timestamp

1970-2037(了解,即将过期)

四.常见约束

1.主键约束:primary

主键关键字:primary key 

已建好的表的主键添加alter table 表名 primary key(字段名)

将字段设置为主键alter table student add constraint PK_字段名 primaryKey(studentId);

2.非空约束:not null

3.默认值:default

为字段添加默认值:alert table 表名 modify 字段名 set default 默认值

建表的时候为字段添加默认值: 字段名 类型 default 默认值

4.唯一约束:unique

主键和唯一键的区别:1.主键不能为空   2.唯一键可以有多个,但主键只能有一个

5.自增:auto_increment

6.外键约束:

外键:foreign key

注意1.外键只能作用在另一个表的主键上 2.创建顺序只能先创建主表

alter table 外键表 add constraint FK_约束名 foreign key ([外键列]) references [主键表] ([主键列])
语法:foreign key(外键所在字段名) references 主表名(主表主键所在字段名)
删除外键:alter table 表名 drop foreign 外键名;

7.级联操作: on delete[update] cascade

示例:示例代码点击

8.置为null: on delete[update] set null

9.检查约束

检查约束使用 CHECK 关键字,具体的语法格式如下:

CHECK <表达式>

其中:<表达式>指的就是 SQL 表达式,用于指定需要检查的限定条件。
若将 CHECK 约束子句置于表中某个列的定义之后,则这种约束也称为基于列的 CHECK 约束
在更新表数据的时候,系统会检查更新后的数据行是否满足 CHECK 约束中的限定条件。MySQL 可以使用简单的表达式来实现 CHECK 约束,也允许使用复杂的表达式作为限定条件,例如在限定条件中加入子查询。

注意:若将 CHECK 约束子句置于所有列的定义以及主键约束和外键定义之后,则这种约束也称为基于表的 CHECK 约束。该约束可以同时对表中多个列设置限定条件

示例代码:

在 test_db 数据库中创建 tb_emp7 数据表,要求 salary 字段值大于 0 且小于 10000,输入的 SQL 语句和运行结果如下所示。
mysql> CREATE TABLE XXX
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT,
    -> CHECK(salary>0 AND salary<100),
    -> FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
    -> );
在修改表时添加检查约束
修改表时设置检查约束的语法规则如下:
ALTER TABLE XXX ADD CONSTRAINT <检查约束名> CHECK(<检查约束>)

修改 tb_dept 数据表,要求 id 字段值大于 0,输入的 SQL 语句和运行结果如下所示。
mysql> ALTER TABLE XXX
    -> ADD CONSTRAINT check_id
    -> CHECK(id>0);

删除检查约束
修改表时删除检查约束的语法规则如下:
ALTER TABLE <数据表名> DROP CONSTRAINT <检查约束名>;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值