MySQL基础

看了很多MySQL的基础,现在把自己的学习笔记记录下来,方便自己以后的复习和巩固,除了官网和chm,还有一些博文,感觉也写的挺好的 侵删 21分钟 MySQL 入门教程MySQL的初次见面礼基础实战篇

什么是数据库?
数据库 是按照数据结构来组织、存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。
RDBMS即关系数据库管理系统 的特点:
1.数据以表格的形式出现
2.每行为各种记录名称
3.每列记录名称所对应的数据域
4.许多的行和列组成一张表单
5.若干的表单组成database

一、环境准备

开始基础学习,MySQL肯定得要安装好了,除了用workbench(MySQL Workbench官方介绍),也可以用Navicat for MySQL(http://www.cr173.com/ 也可以自己去下载破解版) 操作数据库

image.png

二、MySQL中的数据类型

《MySQL数据类型》

三、数据库与表的创建以及SQL增删改查

1.mysql服务的启动、停止和卸载
    启动—— net start mysql
    停止—— net stop mysql
    卸载—— sc delete mysql


2.登录到mysql数据库
    
语法:
    mysql -h 主机名 -u 用户名 -p
    (输入密码-----)
    eg:
    mysql -u root -p
    回车确认,如果安装正确且mysql正常运行,会提示输入密码,再正确输入即可


3.创建、删除、查看数据库
    
语法:
     create database 数据库名 character set gbk;创建数据库(utf-8,gbk都可以)
    drop database 数据库名 删除数据库
    show databases 数据库名 查询所有数据库
    eg:
    create database samp_db character set utf-8;
    为了便于在命令提示符下显示中文,在创建时通过character set gbk 将数据库字符编码指定为gbk


4.选择所要操作的数据库
    
语法:
     use 数据库名;
    eg:
    use samp_db


5.创建数据库表
    
语法:
    create table 表名称(列声明)
    eg:
    create table students(
    id int unsigned not null auto_increment primary key,
    name char(8) not null,
    sex char(4) not null,
    age tinyint unsigned not null,
    tel char(13) null default "-");
    user 表:
    CREATE TABLE user (
    id int(11) NOT NULL AUTO_INCREMENT,
    username varchar(32) NOT NULL COMMENT 用户名称,
     birthday date DEFAULT NULL COMMENT 生日,
    sex char(1) DEFAULT NULL COMMENT 性别,
     address varchar(256) DEFAULT NULL COMMENT 地址,
    PRIMARY KEY (id)
    ) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8;
    对于有的较长的语句,在命令提示符下,我们可能容易输错,因此,我们通过文本编辑器保存sql文件,然后通过命令提示符下的文件重定向执行该脚本。
    mysql -D 数据库名称 -u root -p < sql文件所在完整的目录
    eg:
    mysql -D samp_db -u root -p <D:\createtable.sql需要关闭cmd,然后重新打开
    外键,teacher表id,,外键需要先定义,再说明引用来自哪一张表:
    create table student(
    id int not null primary key,
    name varchar(20),
    teacher_id int,
    FOREIGN KEY(teacher_id) REFERENCES teacher(id));


6.向表中插入数据
    
语法:
    insert into 表名 [(列名)] values (值...)
    eg:
    insert into students values(NULL,"王刚","男",20,"13458695211")
    insert into students(name,sex,age) values("孙刘慧","女",21);
    INSERT into teacher values(1,'teacher1'),(2,'teacher2'),(3,'teacher3')


7.查询表中的数据
    
语法:
    select 列名称 from 表名称 [查询条件];
    eg:
    select name,age from students;
    也可以使用通配符*查询表中所有的内容,但是实际工作中,数据量太大,一般都不建议使用*
    语法:
    select 列名称 from 表名称 where 条件;
    eg:
    select name,age from students where sex="女";
    按特定的条件查询,where 子句不仅仅支持where 列名=值,对一般的比较运算符也是支持的,例如=,>,<,>=,<=,!=以及is [not] null,in,like 等等,还可以对查询条件使用or和and进行组合查询


8.更新表中的数据
    
语法:
    update 表名称 set 列名称=新值 where 更新条件;
    eg:
    update students set tel=default where id =5;


9.删除表中的数据
    
语法:
    delete from 表名称 where 删除条件;
    truncate table 表名称/*清空表*/
    eg:
    delete from students where id=2;/*删除id为2的行*/
    delete from students where age<20;/*删除所有年龄小于21岁的数据*/
    delete from student;/*删除表中的所有数据*/
    truncate table student/*清空表中的所有数据*/


10.添加列
    
语法:
    alter table 表名 add 列名 列数据类型 [after 插入位置];
    eg:
    /*在表的最后追加列:*/ alter table students add address char(60);
    /*在age列后插入列birthday:*/ alter table students add birthday date after age;


11.修改列
    
语法:
    alter table 表名 change 列名称 列新名称 新数据类型;
    eg:
    /*将表tel列改名为telphone:*/
     alter table students change tel telphone char(13) default "-";
    /*将name列的数据类型改为char(16): */
    alter table students change name char(16) not null;


12.删除列
    
语法:
    alter table 表名 drop 列名称;
    eg:
    /*删除birthday列:*/ alter table students drop birthday;


13.重命名表
    
语法:
    alter table 表名 rename 新表名;
    eg:
    alter table students rename workmates;


14.删除整张表
    
语法:
    drop table 表名;
    eg:
    drop table workmates;


15.查看表结构
    
语法:
    desc 表名;
    eg:
    desc user


16.连接查询
    
*内连接*语法:
    select 列名1... from 表1 inner join 表2 on 表1.外键=表2.外键 [where / order by 语句]
    eg:
    select tm.name,tm.price,(tm.price*od.tiems_num) as price from orderdetail as od inner join items as tm on od.item_id=tm.id;

**左外连接*:
    -- 无论右边是否有数据对应左边的表,左边的表都将显示左表查询该列的所有信息
    语法:
    select 列名1... from 表1 left [outer] join 表2 on 表1.外键 = 表2.外键 [where / order by 语句等]
    eg:
    select u.username,o.number,o.createtime from user as u left join orders as o on u.id=o.user_id;

**右外连接*:
    -- 和左外连接恰恰相反,无论左表是否与右边的表与之对应,右边的表都将显示右表查询该列的所有信息,下面的这个例子就是 与左连接的查询结果一样。
    语法:
    select 列名1... from 表1 right [outer] join 表2 on 表1.外键=表2.外键 [where / order by 语句等]
    eg:
    select u.username,o.number,o.createtime form orders as o right join user as u on u.id=o.userid;


*17.查询eg
    select count(*) from student -- 查询student表中有多少数据
    SELECT COUNT(*) from test where age=21-- 查询test表中age为21的数据一共有多少条
    select count(*) from test where age>21;-- 查询test表中age大于21的数据一共有多少条,数据库中的int类型支持大于小于等比较符
    select count(*) from test where age>21 and age<30;-- 查询test表中age大于21并且小于30的数据一共有多少条
    select * from test order by id desc;-- 查询test表按id降序排序


18.复制表
    
语法:
    create table 新表名 select * from 旧表名;
    eg:
    create table new_user select * from
    user;select * from new_user


19.复制表结构
    
语法:
    create table 新表名 like 旧表名;
    eg:
    create table new_u_d like user;
    select * from new_u_d;
    desc new_u_d;


20.复制表数据
    
语法:
    insert into 表名 select * from 带数据的表;
    eg:
    insert into new_u_d select * from user;
    select * from new_u_d

create database 数据库名 character set bgk
*在创建时character set gbk 将数据库字符编码指定为gbk
*可以用 show database 查看已经创建了哪些数据库

选择所要操作
在登录数据库时候 MySQL -D 所选择的数据库名 -h 主机名 -u 用户名 -p

create table 表名(列声明);
*eg:
create table students(
id int unsigned not null auto_increment primary key,
name char(8) not null,
sex cahr(4) not null,
age tinyint unsigned not null,
tel cahr(13) null default "-"
)

外键.png
指定执行sql文件01.png

可视化工具:
Navicat 在线手册
mysq数据库管理工具navicat基本使用方法
Navicat For Mysql快捷键

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容