玖叶教程网

前端编程开发入门

mysql 最基础又全面的操作

-数据库操作

--create database 数据库名字[库选项]

--库选项:用来约束数据库,分为两个选项

--字符集设定:charset/character set 具体字符集(数据存储的编码形式):常用字符集:GBK和UTF8

--校对集设定:collate 具体校对集(数据比较规则)

--创建数据库

creat database myfirst charset utf8;

--查看数据库

show databases;

show databases like 'm%';

--修改数据库(只能修改库选项)

alter database myfirst charset gbk;

--删除数据库

drop database myfirst;

数据表操作

create table[if not exists] 数据库名.表名( --将当前数据表创建到指定数据库下

字段名字 数据类型,

字段名字 数据类型 --最后一行不需要逗号

)[表选项];

--表选项:控制表的表现

--字符集:charset/chracter set 具体字符集;保证表中数据存储的字符集

--校对集:collate 具体校对集(数据比较规则)

--存储引擎:engine 具体的存储引擎(innodb 和 myisam)

--创建数据表

create table if not exists mydatabase.student(

name varchar(10),

gender varchar(10),

number varchar(10),

age int

)charset utf8;

--进入某个数据库

use mydatabse;

--查看所有表

show tables;

--查看以s结尾的表

show tables like '%s';

--查看表创建语句

show create table student\g --\g === ;

show create table student\G --将查到的结果旋转90度

--查看表结构:查看表中的字段信息

Desc/describe/show columns + 表名

desc class;

describe class;

show columns from class;

--修改数据表

--修改表本身:表名和表选项

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

rename table student to my_student;

--修改表选项:字符集,校对集,存储引擎

alter table 表名 表选项 (=)值

alter table student charset gbk;

--修改字段(新增,修改,重命名,删除)

--新增字段

alter table 表名 add[column] 字段名 数据类型[列属性][位置];

--位置:字段名可以存放表中的任意位置

First:第一个位置

after:在哪个字段之后,after 字段名;默认的是在最后一个字段之后

--给学生表增加id放到第一个位置

alter table my_student

add column id int

first; --mysql会自动寻找分号作为语句结束符

--修改字段

--alter 表名 modify 字段名 数据类型[属性]

alter table my_student

modify number char(10) after id;

--重命名字段

--alter table 表名 change 旧字段 数据类型

alter my_student

change gender sex varchar(10);

--删除字段

--alter table 表名 drop 字段名

alter table my_student drop age;

--删除数据表

--drop table 表名1,表名2..; 可以一次性删除多个表

drop table class;

数据操作

--新增数据

--方案一:给全表字段插入数据,不需要指定字段列表,

--要求数据的值的出现的顺序必须与表中设计的字段出现的顺序一致,

--凡是非数值数据,都需要使用引号(建议是单引号)

insert into my_student values(1,'itcast0001','jim','male');

--方案二:

--insert into 表名(字段列表) values(值列表)[,(值列表)];

insert into my_student(number,sex,name,id) values('itcast0003','male','tom',3);

--查看数据

select * from my_student

select id,number,sex,name from my_student where id=1;

--更新数据

update 表名 set 字段=值[where 条件]; --建议都有where,要不然会更新全部

update my_student set sex = 'female' where id=1;

--删除数据

delete from 表名 [where];

delete from my_student where sex='male';

中文数据问题

--中文数据问题本质是字符集问题

--只有三个都是gbk才能插入中文,并且查询数据中能出现中文

//查看服务器到底识别哪些字符集

show character set;

--服务器基本上所有字符集都支持

//既然服务器识别这么多,总有一种是服务器默认的跟客户端打交道的字符集

1.--查看服务器默认的对外处理的字符集

show variables like 'character_set%';

2.--修改服务器认为的客户端数据的字符集

set character_set_client = gbk;

3.--修改服务器给客户端的数据字符集为gbk

set character_set_result = gbk;

--!!!注意:set 变量 = 值 ;修改只是会话级别(当前客户端,当次连接有效,关闭失效)

--设置服务器服务器对客户端的字符集的认识:可以使用快捷方式 set names 字符集

set names gbk;

=

character_set_client

character_set_connection

character_set_result

--connection连接层,是字符集转变的中间者,如果统一了效率更高

校对集问题

--校对集:数据比较的方式

--校对集有三种格式

_bin:binary,二进制比较,取出二进制位,一位一位的比较,区分大小写

_cs:case sensitive,大小写敏感,区分大小写(少见)

_ci:case insensitice,大小写不敏感,不区分大小写

查看数据库所支持的校对集:show collation;

--校对集应用:只有当数据产生比较大的时候,校对集才会生效

--对比:使用utf8的_bin和_ci来验证不同的校对集的效果

--创建表使用不同的校对集

create table my_collate_bin(

name char(1)

)charset utf8 collate utf8_bin;

create table my_collate_ci(

name char(1)

)charset utf8 collate utf8_general_ci;

--插入数据

insert into my_collate_bin values('a'),('A'),('B'),('b');

insert into my_collate_ci values('a'),('A'),('B'),('b');

--比较:根据某个字段进行排序,order by 字段名[asc|desc]

--排序查找

select * from my_collate_bin order by name;

select * from my_collate_ci order by name;

--校对集:必须在没有数据之前声明好,如果有了数据,那么再进行校对集修改无效

Web乱码问题

--动态网站由三部分构成:浏览器,apache服务器(PHP),数据库服务器,三个部分都有自己的

--字符集(中文),数据需要再三个部分之间来回传递,很容易产生乱码

float精度损失问题

1.float类型必须同时写总位数和小数位数才有效,否则只是默认的宽度6位

float(10,2),总位数是10,小数位数2位。

float(10),用desc查看时,仍然是float,说明不能单独定总位数,这样仍然是默认的宽度6位

2.默认为float类型,没有小数部分,超过六位时会出现误差

3.如果存在小数部分,无论整数部分是多少位,只要有效数字超过八位就会出现误差。

TRUNCATE TABLE t_user 删除表中所有行,主键自增重新从1开始计算

DELETE FROM t_user 删除数据库的记录,主键自增的值不变

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言