mysql学习


1.基本语法学习

使用频率最高的


MySQL[1] 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司

1.mysql的登录:需要在命令行中输入Mysql +参数:-V 版本参数  -uroot(可以不加) -p端口号(默认是3306) -P密码 -h服务器名称(本地是127.0.0.1)
eg:mysql -uroot -p -P3306 -h127.0.0.1
2.修改mysql的提示符号,

(1)mysql -uroot -p -P3306 --prompt \h         [\h是修改成为本地主机名称的意思]   

(2):登录成功以后修改prompt(后面可以跟的参数有\D日期 \d数据库 \h服务器 \u当前的用户)
3.常用命令以及语法:

SELECT VERSION();版本  当前的用户:

SELECT USER();

SELECT NOW();现实当前的日期:
关键字函数库大写;数据库名称,表名字,字段名称全部小写;SQL语句必须以分好结尾
4.数据库的操作:

mysql安装完成自带了四个数据库

创建数据库:CREATE {DATABASE|SCHEMA}[IF NOT EXISTS] db_name

                  eg:1: CREATE DATABASE classname;

                      2: CREATE DATABASE IF NOT EXISTS classname;-----SHOW WARNINGS;

                      3:SHOW CREATE DATABASE cassname;
设置编码格式:CHARACTER SET[=] utf8/gbk;

 
ALTER DATABASE db_name CHARACTER SET charset_name;

                  eg:1:CREATE DATABASE classname CHARACTER SET gbk;
修改数据库:ALTER{DATABASE|SCHEMA} [db_name] CHARACTER SET [=] utf8..
删除数据库:DROP{DATABASE|SCHEMA}[IF EXISTS] db_name;
本节涉及到的其他一些操作:SHOW DATABASES;

   mysql默认的端口号是:3306
   mysql中的超级用户:root
   创建数据库 CREATE DATABASE
   修改数据库 ALTER DATABASE
   删除数据库 DROP DATABAS

                                  
 5.数据类型:
(1)整数

计算机

TINYINT           [0-255|-128到127] ----------------占用1个字节
SMALLINT        [无符号UNSIGNED:0-65535有:-32768-32768] ------2字节
MEDIUMINT    ----------------------3
INT  -               ------------4
BIGINT             ----------------8   

                                   
(2)浮点型
FLOAT[(M,D)]---D小数点后面的位数----M小数点前面和后面的总位数---常用
DOUBLE[(M,D)]   是float的十倍
(3)日期--一般是在php中用数字类型进行传唤存储,因为涉及到跨时区的问题。
YEAR   存贮需求 1 TIME   DATE DATATIME  TIMESTAMP   
(4)字符型

一个字节=8byte(最大是111111111)

CHAR(M)                M个字节 0-255  定长的类型,当不满的时候会自动以空格补齐
VARCHAR(M)         0-65535    变长类型,不会补齐
TINYTEXT               L<2^8
TEXT                       2^16
MEDIUMTEXT        
ENUM('A','B')         枚举值:给它几个选项,他会从其中进行选择
set('a','b','c')           集合,最多有64个成员,在其中做任意的排列组合


6.数据表(表)行--记录;列---字段;

关系型的数据表,其实就是一张二维的表格。数据表是数据库的重要组成部分。


USE命令+数据库名称:使用某一个已经存在的数据库,打开数据库;eg:USE test;----打开表:SELECT DATABASE();

CREATE TABLE classname(

username VARCHAR(20),

age TINYINT UNSIGNED // unsigned,

salary FLOAT(8,2) UNSGINED

);

查看数据表:SHOW TABLES;   查看其它数据表:SHOW TABLES FROM mysql(比如mysql);

SHOW TABLES;

SHOW TABLES FROM mysql;

SELECT DATABASE();查看是在那个数据库

查看数据表的结构:SHOW COLUMNS FROM tab1_name;

SHOW COLUMNS FROM name; // 查看数据表的结构

数据表就是一张二维的表格,行叫做记录。如何写入记录呢?首先要创建数据表:

向数据表中写入命令:INSERT tab_name VALUES;


INSERT name VALUES('anikin',23,5000.22);

INSERT name(username,salary) VALUES('jack',6000.8);

记录查找:SELECT ...FROM tab_name;---
                          eg:SELECT * FROM tab1;会看到所有的数据表记录
NULL.字段值可以为空
NOT NULL,字段禁止为空


7.主键 

比如银行中的账目,卡号就是主键,如果卡号重复了,钱算谁的呢,下面是理论解释:
数据库主键

  主键表中经常有一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。

自动编号:AUTO_INCREMENT,起始值为1;必须定义为主键,一张数据表只有一个

自动编号的类型必须是整数,如果是浮点数的话小数位数必须是0;

主键约束(PRIMARY KEY),主键保证记录的唯一性;主键是可以赋值的。
auto_increment必须和primary key使用,而primary key不一定要和auto_increment使用.

主键是可以赋值的

唯一约束UNIQUE  KEY一张数据表可以有多个,也可以为空值,二者在创建索引的时候也是有区别的

举例二者说明:

CREATE TABLE m3(

id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

username VARCHAR(20) NOT NULL UNIQUE KEY,

age TINYINT UNSIGNED

);

INSERT m3(username,age) VALUE('jack',66);   //这个地方会报错-->说明唯一约束和主键约束

INSERT m3(username,age) VALUE('jack',22);

可以保证记录的唯一性,唯一约束的字段可以为null值,每张数据表可以存在存在多个唯一约束。
默认约束:如果没有明确的为字段复制,则自动赋予默认值;

主键一般只有一个,一般是和auto_increment一起使用,那么我们要是还需要约束该怎么办呢?
唯一约束:可以保证记录的唯一性,主键一张表可以有多个,可以为空
主键约束和唯一约束的区别:
CREATE TABLE tb4(
id SMALLINT NOT NULL AUTO_CREMENT PRIMARY KEY, //主键约束是默认不能为空,因此NOT NULL其实可以不写
username VARCHAR(20) UNIQUE KEY,
age TINYINT NOT NULL
);
SHOW COLUMNS FROM tb4;
INSERT tb4(username,age) VALUES('anikin',23);
INSERT tb4(username,age) VALUES('anikin',24); //这个时候就会出错,因为username字段已经出现过anikin
默认约束:
当插入记录时候,没有明确为字段赋值,则系统自动默认值 default

CREATE TABLE tb6(

id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

username VARCHAR(20) NOT NULL UNIQUE KEY,

sex ENUM('1','2','3')DEFAULT '3'

);


SHOW COLUMNS FROM tb6;

INSERT tb6(username) VALUES('anikin');

SELECT* FROM tb6;


mysql学习 - 眷恋天空的驴 - 迷茫。。。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【初识mysql】 mssql 2000 Access DB2 oracle 【mysql安装】 1、官方下载mysql win32 msi 2、点击安装 3、配置 4、查看是否安装成功 通过cmd 输入netstat -a搜索3306端口是否处于listening状态 【mysql服务的启动与停止】 1、右击我的电脑-管理-服务与应用程序-服务-mysql 2、net stop mysql|net start mysqlmysql的配置文件以及数据位置】 1、安装目录下名为mysql.ini文件 2、默认数据位置 配置文件字段为datadir 3、配置文件简单的字段的理解 【mysql的登录与退出】 1、通过图形化界面 phpmyadmin mysqlGUI Navicat for MySQL 2、DOS登录或者自带的MySQL Command Line Client mysql -h IP或者域名 -u username -p -P port 回车 PWD 3、exit或者quit(CLI) 【密码的修改】 1、set password = password('密码'); set password for 用户名@域名或者地址 =password('密码'); 2、cmd下输入mysqladmin -uroot -p password 新密码 回车 旧密码 3、通过修改mysql数据库的user表 update mysql.user set password=password('新密码') where host='ip或者域名' and user='用户名' 【忘记密码的解决办法】 1、停止mysql服务 2、mysqld(mysqld-nt) --skip-grant-tables 3、重新打开窗口cmd 4、输入mysql -u root -p 回车 无需密码 5、通过上述密码修改方法3修改密码 6、flush privileges 7、exit 8、资源管理器kill进程mysqld 或者 mysql-nt 不要把mysql.exe 9、net start mysql 【简单的用户权限管理】 1、用户的创建 create user 用户名 identified by 密码 2、删除用户 drop user 用户名 3、用户重命名 rename user 原始名称 to 新名称 注释 : 用户名@localhost 只能本地登录 用户名@% 可以通过非本地登录 如果本地登录将%自动转换为localhost 【用户的权限】 1、初始用户只具有连接权限不具有其他权限,而且连接这个权限无法收回 只能通过删除用户 2、授权grant 收回权限revoke 3、授权语法 grant 权限 on 数据库.表 to 用户@域名或者IP identified by '密码' 4、收回权限 revoke 权限 on 数据库.表 from 用户@域名或者IP max_queries_per_hour 每个小时最大查询的数 0没有限制 max_updates_per_hour 每个小时最大更新数据的次数 0没有限制 max_user_connects 最大并发数 连接数 0没有限制 max_connects_per_hour 每个小时最大的并发数 0没有限制 【数据库的基本CLI】 1、show databases; 查看服务器的所有数据库 2、select user(); 查看当前用户 3、select version(); 版本 4、show processlist; 在线详细信息 5、show warnings; 警告信息 6、use 数据库名称; 调用具体的数据库 7、show grants [for 用户名@域名或者IP]; 查看用户权限 8、select database(); 产看当前使用数据库 【数据库的创建和删除】 1、create database [if not exists] 数据库名称 2、drop database 数据库名称 【表的创建、修改和删除】 1、创建 create table [if not exists] 表名( 字段名称 类型(大小) 属性, 字段名称 类型(大小) 属性, 字段名称 类型(大小) 属性, ⋯⋯ )engine=innodb default charset=编码; create table [if not exists] 表名( 字段名称 类型(大小), 字段名称 类型(大小), 字段名称 类型(大小), ⋯⋯ 属性, 属性, ⋯⋯ )engine=innodb default charset=编码; 2、数据类型 日期类型:date Y-M-D 20110105(自动去除其的非法符号!,*) time h:m:s 14:12:11 datetime date+time Y-M-D H:m:S timestamp:更新时日期值也会更新 timestamp default current_timestamp:只记录第一次插入的时间 数值类型: tinyint 0|1 smallint mediumint int[M] M默认11 人为设定系统也会根据自动分配空间(类似char和varchar) bigint float[(M,D)] 10的(M-D)次方->代表最大值 D->代表保留位数不够补0 //For float(M,D), double(M,D) or decimal(M,D), M must be >= D //只写M 0-24代表float精确度总的十位数超过6位用科学计数法,小数超出四舍五入,不够不补0 //float和double在desc不会显示精确度 //select 通过 float查询的前提是MD都有或者是double double //25-53代表double 但是不可以写精确度 >15位用科学计数法 字符串类型 char varchar text blob enum(v1,v2,v3⋯⋯65535) 插入的值是其的一个 set(v1,v2,v3⋯⋯64) 插入的值是其的0到多个 3、属性 1、自增属性 auto_increment 2、不为空not null | null 3、默认值default 4、主键primary key 5、列值的唯一 unqiue 6、索引 index|key 7、前导0 zerofill 属性可以写在末尾的主键 列值唯一 索引 4、查看表 desc 表名 show columns from 表名 show columns in 表名 5、修改表 alter table 表名 a) drop 字段 注意当表字段为1个的时候不能删除 b) add 字段名 类型[大小] 属性,add 字段名 类型[大小] 属性⋯⋯ [after|first 字段] c) modify 字段名 类型[大小] 属性,modify 字段名 类型[大小] 属性⋯⋯ [after|first 字段] d) change 原始的字段名 新的字段名 字段名 类型[大小] 属性,modify 字段名 类型[大小] 属性⋯⋯ [after|first 字段] e) rename 新的表名 (方法二:rename table 旧的表名 to 新的表名) f) engine=存储引擎(type不建议使用) g) charset=字符编码 6、删除表格 drop table 表名 【表创建例题】 例题1:创建一个表用于存储用户上传的文件信息 (文件的原始名,大小,路径,文件名,类型,上传人,是否共享) 例题2:创建一个表用于存储用户注册信息 (用户名,密码,id,email,安全问题,安全问题答案) 例题3:创建一个表用户留言板信息 (给谁留言,是谁留的言,留言时间,留言内容) 【数据库和表相关信息的一些CLI】 1、show create database 数据库名 2、show create table 表名 3、show status; 4、show table status like ""; 5、show variables; 【数据库的备份与导入】 1、备份cmd->mysqldump -u root -p 数据库 [表名] > 文件名.sql->回车->密码 注意:cmd下运行mysqldump >覆盖 >>追加 2、还原:进入mysql下->source 路径 3、备份和还原可以进入配置文件所在数据目录下拷贝 【CURD操作】 1、表记录的写入 insert into 表名[(字段1,字段2,字段3,⋯⋯)] values(值1,值2,值3,⋯⋯),(值1,值2,值3,⋯⋯) 2、insert into 表名 set 字段1=值1,字段2=值2,字段3=值3⋯⋯ 3、表记录的删除 delete from 表名 where 条件 4、表记录的更新 update 表名 set 字段1=值1,字段2=值2,字段3=值3⋯⋯ [where 条件] 5、表记录的查询 select *|字段[,字段] [as 新字段名称] from 表名 [where 条件 group by 字段 having 附加条件 in() order by ASC|DESC limit开始,长度] 6、where 条件的理解 = | !=(<>) | between and | or | and | in | not 【mysql的简单的数学函数】 1、统计函数 count()|max()|min()|avg()|sum() 2、mysql运算 php运算一致(除逻辑运算&& || !) 3、数学函数 pi()|round()|rand()|ceil()|floor|sin()|abs()|mod() 4、特殊的 like '' %->任意 regexp '' ->posix 【mysql的字符串和时间】 concat(字符1,字符2...) 字符连接 instr(字符串,字符) 寻找字符所在字符串的位置 char ascii编码 转化为字符 ord 字符转化为ascii编码 substring(字符串,开始位置,长度); length(字符串) 字符串长度 substr(字符串,开始位置,长度); lpad 往左边填充 rpad 往右边填充 lower 转化为小写 upper 转化为大写 select left(字符串,长度);从左边取几位 select right(字符串, 长度);从右边取几位 select curdate(); 获取当前的日期 select curtime(); 获取当前的时间 select now();获取当前的时间跟日期
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值