# ***\*MySQL\****中(基本操做)

****MySQL****中(基本操做)

二进制存储

在这里插入图片描述

创建表时需 指定m的值

*BIT(M)*

其中,“M”指定该二进制数的最大存储长度为M,M的最大值为64 指的是位 一个字节8个位

插入数据时,使用 b’位串’的方式插入相应值! 代表二进制 l 查询时,可以使用 bin() 、oct() 、hex() 函数讲字段的值转成相应的二进制、八进制和十六进制.

*create table bit_example (b bit(8) );* *#创建表*

*insert into bit_example values( b’10110111’ );* *#插入记录,可以是二进制位*

*insert into bit_example values( ‘a’ );* *#插入记录,可以是字符,但不能超出字节长度*

*select bin(b) from bit_example ;* *#以二进制的方式显示字段值*


在这里插入图片描述

*1. 单字段主键*

单字段主键的语法规则如下:

CREATE TABLE tablename(

propName propType PRIMARY KEY, …

);****或****

CREATE TABLE tablename(

propName propType , …

PRIMARY KEY(propType)

);

Mysql 支持给主键设置名字:

CREATE TABLE tablename(

propName propType , …

CONSTRAINT pk_name PRIMARY KEY(propType)

);//给主键设置一个别名

主键可以用两个列联合起来(联合主键)比如

CREATE TABLE tablename(

propName propType , …

PRIMARY KEY(propType , propName)

);

外键约束子表的模板列是父表模板列的主键

CREATE TABLE tablename_1(

propName1 propType ,

propName2 propType ,

FOREIGN KEY(propName1) REFERENCES table2_name(table2_column)

);// 外键约束可以为空

insert into srudent (name,class_id, sex) values(’小红‘,2,’m‘);//不指定自增长的的模板 插入数据

当数据库表中的某个字段上的内容不希望设置为NULL时,约束在创建数据库表时为某些字段上加上“NOT NULL”约束条件

设置表字段唯一约束(UNIQUE)//表里面模板列不允许重复

设置表字段值自动增加(AUTO_INCREMENT)不指定这个模板列 这个模板列 自增加1(类型必须是整数) 历史上最大值加1 包括删除的!!!(AUTO_INCREMENT)这个约束只能定义为键

delete from class where id=100;//删除一条记录 class 为表名 id 为模板列

*设置表字段的默认值(DEFAULT)*

CREATE TABLE tablename(

propName propType DEFAULT defaultvalue, …

);

alter table [table_name] add constraint [constraint_name] [unique key| primary key|foreign key] ([column_name]) 增加模板列的约束

unique key 列里的值是唯一的 使用时不用加中括号

primary key 主键 constraint [constraint_name]为模板列定义别名

foreign key 模板列为另一个表的主键; column_name 表的名字

show keys from column_name ;//查看键值

*删除*

\1. 通过如下命令查询键值的约束名:

show index或keys from 表名;

\2. 执行如下命令删除:

主键: alter table 表名 drop primary key;

外键或唯一键: alter table 表名 drop index 约束名;

*修改默认值DEFAULT、自增长和非空NK*

alter table 表名 modify 列名 要修改的约束名;


*普通索引*

CREATE TABLE tablename(

propname1 type1,

propname2 type2,

……

propnamen type…n,

INDEX | KEY

[indexname] (propnamen [(length)] [ ASC | DESC ] ) ); //创建表时指定索引 ASC为升序 DESC为降序

create database school;#创建数据库school****

use school; #选择数据库school****

create table class(id int, name varchar(128) UNIQUE, teacher varchar(64), INDEX index_no(id DESC));#创建表class, 并建立为id 字段索引**** 不指定默认为升序

select * from class where id > 0 ;**** *#根据id查询记录,结果将降序排列*

drop table class; 删除这张表

在已有的表创建索引 CREATE INDEX indexname

ON tablename (propname [(length)] [ASC|DESC]); 参数INDEX是用来指定字段为索引,参数indexname是新创建的索引的名字;

create index index_id on class(id ASC);**** *#追加升序索引*

ALTER TABLE tablename ADD INDEX | KEY indexname

(propname [(length)] [ASC|DESC]);

alter table class add index index_id(id DESC); 为模板追剧索引index_id是指为模板创建的新名字

DROP INDEX indexname ON tablename; DROP INDEX关键字删除 删除这个索引

*唯一索引*

关键字 UNIQUE INDEX

必须这个模板列的约束是 UNIQUE 的 查找速度更快 创建用法除关键字外 同上

*全文索引*

关键字 FULLTEXT INDEX

select * from class where match(comment) AGAINST(‘我是一个兵’);#利用全文检索索引快速查询记录**** match 匹配 AGAINST 参照


中文检索

全文支持中文查找 两个字的查找

配置文件my(Windows 10默认路径: C:\ProgramData\MySQL\MySQL Server 8.0) 中增加如下配置项,同时重启MySQL80 服务:

[mysqld]

ngram_token_size=2

create table class(id int, name varchar(128) UNIQUE, teacher varchar(64),comment varchar(1024),FULLTEXT INDEX index_des(comment) with parser ngram);#创建表class, 并建立为comment 字段为全文索引**** with parser ngram 后面固定加的关键字

insert into class values(2,‘2班’,‘Rock’,‘此班主任毕业自唐僧系’);**** *# 插入记录2*

select * from class where match(comment) AGAINST(‘百姓’);********#利用全文检索索引

*多列索引*

和普通索引定义基本相同,不同之处就是增加了多个索引列。多列索引,是指在创建索引时所关联的字段不是一个字段,而是多个字段,虽然可以通过所关联的字段进行查询,但是只有查询条件中使用了所关联字段中的第一个字段,多列索引才会被使用。

create table class(id int, name varchar(128) UNIQUE, teacher varchar(64), INDEX index_mult_columns(id, teacher));**** *#创建表class, 并建立包含id,teacher字段的多列索引*

select * from class where id > 0 and teacher= ‘rock’ ;多列索引查询必须指定第一个索引条件 id 另一个索引条件可以不加

*隐藏索引*

ALTER TABLE tablename ALTER INDEX index_name INVISIBLE; #隐藏索引

ALTER TABLE tablename ALTER INDEX index_name VISIBLE; #取消隐藏

*删除索引*

DROP INDEX indexname ON tablename;

l *插入完整数据记录*

insert into class(插入的模板列) values(2,‘2班’,‘Rock’,‘此班主任毕业自唐僧系’);指定插入

insert into class(插入的模板列) values(2,‘2班’,‘Rock’,‘此班主任毕业自唐僧系’),(2,‘2班’,‘Rock’,‘此班主任毕业自唐僧系’);追加多条记录插入

*更新表中的数据记录*

UPDATE tablename SET field1 = value1, field2 = value2, field3 = value3, …, fieldn = valuen WHERE CONDITION;

update class set teacher = ‘如花老师’ where teacher = ‘Rock’;#通过teacher 字段匹配更新记录

update class set name=’如花二班’,teacher=‘如花老师’ where id=2; 替换多个数字

update class set name=’如花二班’;修改这列所有的数据

alter table 表名 change coumn 列名 要修改的列名 varchar(64);修改模板列的名字

*删除表中的数据记录*

delete from class where teacher = ‘Martin’;//删除这条记录

delete from class ;// 删除这张表中全部的记录

rop table class;// 删除这张表

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值