QQ个性网:专注于分享免费的QQ个性内容

关于我们| 网站公告| 广告服务| 联系我们| 网站地图

搜索
编程 JavaScript Java C++ Python SQL C Io ML COBOL Racket APL OCaml ABC Sed Bash Visual Basic Modula-2 Logo Delphi IDL Groovy Julia REXX Chapel X10 Forth Eiffel C# Go Rust PHP Swift Kotlin R Dart Perl Ruby TypeScript MATLAB Shell Lua Scala Objective-C F# Haskell Elixir Lisp Prolog Ada Fortran Erlang Scheme Smalltalk ABAP D ActionScript Tcl AWK IDL J PostScript IDL PL/SQL PowerShell

mysql-数据库和表的基础操作

日期:2025/04/03 16:04来源:未知 人气:54

导读:1.navicat创建数据库:字符集有两个utf8:utf8mb4,utf8:utf8mb4比较于utf8多了Emoji表情和一些不常用的汉字,以及任何新增的 Unicode 字符等等。排序规则;utf8_unicode_ci比较准确,utf8_general_ci速度比较快。一般选utf8_general_ci。如果创建不了,需要root用户授权:GRAN Tprivileg......

1.navicat创建数据库:

字符集有两个utf8:utf8mb4,utf8:

utf8mb4比较于utf8多了Emoji表情和一些不常用的汉字,以及任何新增的 Unicode 字符等等。

排序规则;

utf8_unicode_ci比较准确,utf8_general_ci速度比较快。一般选utf8_general_ci。

如果创建不了,需要root用户授权:

GRAN Tprivileges ON databasename.tablename TO 'username’@‘host’;

privileges:表示要授予什么权力,例如可以有 select , insert ,delete,update等,如果要授予全部权力,则填 ALL;

databasename.tablename:表示用户的权限能用在哪个库的哪个表中,如果想要用户的权限很作用于所有的数据库所有的表,则填 .,*是一个通配符,表示全部。

'username'@'host':表示授权给哪个用户。

grant all on . to 'xxx'@'%'; 表示给用户xx授权,让xxx能给所有库所有表实行所有的权力。

撤销权利grant改成revoke;

. 授权,撤销时不能撤销select 权利,用 . 撤销权利,也不能撤销select权利。

msyql字段常用数据类型:

整型int Unsigned:范围(0 ~ 4294967295) ,TINYINT(0 ~ 255),SMALLINT(0 ~ 65535),MEDIUMINT(0~ 16777215)。

整型int signed:范围(-2147483648 ~2147483647) ,TINYINT(-128 ~ 127),SMALLINT(-32768 ~ 32767),MEDIUMINT(-8388608 ~ 8388607)。

小数型decimal:表示浮点数,如decimal(5,2)表示共存5位数,小数占2位。

字符串char型:范围(0-255),表示固定长度的字符串,如char(3),如果填充'ab'时会补一个空格为'ab '。

字符串varchar型:范围(0-255),表示可变长度的字符串,如varchar(3),填充'ab'时就会存储'ab'。

字符串text型:范围(0-65535),表示存储大文本,当字符大于4000时推荐使用。

日期时间型: date, time, datetime

时间类型:DATE 字节长度:4 格式:'2020-01-01'

时间类型:TIME 字节长度:3 格式:'12:29:59'

时间类型:DATETIME 字节长度:8 格式:'2020-01-01 12:29:59'

时间类型:YEAR 字节长度:1 格式:'2017'

时间类型:TIMESTAMP 字节长度:4 格式:'1970-01-01 00:00:01' UTC ~ '2038-01-01 00:00:01' UTC

枚举类型: enum。

大文件图片、音频、视频等,不直接存储在数据库中,只在数据库中存储这些文件的保存路径。

定义字段的长度够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间,不存储图片这些大文件也是为了节省存储空间,提高数据库效率。

表约束:

主键primary key:物理上存储的顺序。

非空not null:此字段不允许填写空值。

惟一unique:此字段的值不允许重复。

默认default:当不填写此值时会使用默认值,如果填写时以填写为准。

外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常。虽然外键约束可以保证数据的有效性,但是在进行数据的增加、修改、删除、查询时,都会降低数据库的性能,所以不推荐使用,可以在逻辑层进行控制。

数据库操作:

新建数据库test1_db,定义字符集为utf8;

create database test1_db charset=utf8;

使用数据库test1_db:

use test1_db;

查看数据库test1_db的创建信息:

show create database test1_db;

删除数据库test1_db:

drop database test1_db;

查看系统时间:

select now();

查看当前使用的数据库:

select database();

表操作:

选择数据库,查看数据库里有哪些表:

show tables;

创建一个学生表:

create table 表名 (

字段 类型 约束,

字段 类型 约束,

字段 类型 约束

);

create table students(

定义id为整数类型,不能为空,自动增长,主键

id mediumint unsigned not null auto_increment primary key,

name varchar(20),

age tinyint unsigned default 18,

hight decimal(5,2),

定义性别为枚举类型,有三个值,默认值为secret

gender enum("male","female","secret") default "secret",

class_id int unsigned

);

查看表结构:

desc students;

删除表:

drop table students;

向表里插入数据:

insert into students values (0,"王大锤",23,170.11,"male",1001);

查看表信息:

select * from students;

指定值插入:

insert into students(name,hight,class_id) values ("铁锤妹妹",170.11,1001);

修改表:

为表新加一列birthday 数据类型为datetime :

alter table students add birthday datetime;

修改列birthday 数据类型(修改约束条件 用modify)为date:

alter table students modify birthday date;

修改列birthday的名称为生日:

alter table students change birthday your_day date;

删除列birthday:

alter table students drop your_day;

实际工作慎用drop!

查看数据表的建表信息:

show create table students;

看到的是我们建表的标准写法。

其中:engine 是引擎的意思,msyql主要几种引擎:

InnoDB 是默认引擎,适合要求有提交、回滚、崩溃恢复等能力的事物安全能力和并发控制的场景。

MyISAM引擎能较高效率的处理插入,查询。

Archive支持高并发的插入操作,非常适合存储归档数据。

Memory引擎适用于临时存放数据,数据量不大,不需要较高数据安全性场景。

显示数据库引擎:

show engines;

修改表数据:

插入数据:

insert into students (name,age,hight,class_id,birthday) values ("张老五",26,166.21,1002,'1988-01-02');

insert into students(name) values('转轮王'),('细水'),('彩戏师');

修改数据:

update students set name ="张阿生" ,age = 30 where id =3;

删除数据:

delete from students; 这个是把数据全部删掉;

delete from students where name = "张老五";

实际上不这么删除,数据是很宝贵的,用打标记的方式区别:

新增一列:

alter table students add on_off bit default 0;

标记数据转轮王为已删除数据:

update students set on_off =1 where name="转轮王";

select * from students where on_off = 0;就没有转轮王了。

关于我们|网站公告|广告服务|联系我们| 网站地图

Copyright © 2002-2023 某某QQ个性网 版权所有 | 备案号:粤ICP备xxxxxxxx号

声明: 本站非腾讯QQ官方网站 所有软件和文章来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告