Mysql数据库·增删改查
- 格式:doc
- 大小:68.50 KB
- 文档页数:16
mysql增删改查实例一、概述MySQL是一种开源的关系型数据库管理系统,广泛应用于Web应用程序的开发中。
MySQL支持多种操作系统,包括Windows、Linux 和Mac OS等。
本文将介绍MySQL的增删改查操作实例。
二、连接数据库在进行任何操作之前,需要先连接到MySQL数据库。
可以使用以下代码连接到MySQL:```pythonimport mysql.connectormydb = mysql.connector.connect(host="localhost",user="yourusername",password="yourpassword",database="mydatabase")mycursor = mydb.cursor()```其中,host为数据库所在主机的IP地址或域名;user为访问数据库所需的用户名;password为访问数据库所需的密码;database为要连接到的数据库名称。
三、插入数据插入数据是指向MySQL数据库中添加新记录。
可以使用以下代码向表中插入新数据:```pythonsql = "INSERT INTO customers (name, address) VALUES(%s, %s)"val = ("John", "Highway 21")mycursor.execute(sql, val)mit()print(mycursor.rowcount, "record inserted.")```其中,customers为表名;name和address为字段名;%s表示占位符,后面需要使用val变量中的值替换占位符;val为一个元组,包含了要插入的数据。
四、查询数据查询数据是指从MySQL数据库中检索记录。
mysql数据库查询语句大全MySQL是一个功能强大的关系型数据库管理系统,支持多种查询语句,涵盖了数据检索、更新、删除等操作。
下面是一些常见的MySQL查询语句:数据查询:1.SELECT:从数据库中检索数据。
SELECT column1,column2 FROM table_name WHERE condition;2.DISTINCT:返回唯一不同的值。
SELECT DISTINCT column FROM table_name;3.WHERE:添加筛选条件。
SELECT*FROM table_name WHERE column=value;4.ORDER BY:按特定列排序检索结果。
SELECT*FROM table_name ORDER BY column ASC/DESC;5.LIMIT:限制返回的记录数。
SELECT*FROM table_name LIMIT 10;数据更新和删除:1.UPDATE:更新表中的数据。
UPDATE table_name SET column=value WHERE condition;2.DELETE:从表中删除行。
DELETE FROM table_name WHERE condition;表操作:1.CREATE TABLE:创建表格。
CREATE TABLE table_name(column1 datatype,column2 datatype,...);2.ALTER TABLE:修改表格。
ALTER TABLE table_name ADD column datatype;3.DROP TABLE:删除表格。
DROP TABLE table_name;4.TRUNCATE TABLE:清空表格数据。
TRUNCATE TABLE table_name;聚合函数:1.SUM:返回特定列的总和。
SELECT SUM(column)FROM table_name;2.COUNT:返回行数。
mysql中增删改查的例子当然可以!以下是在MySQL中执行增删改查操作的简单示例:1. 创建数据库和表首先,我们创建一个数据库和表。
```sqlCREATE DATABASE mydatabase;USE mydatabase;CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50),email VARCHAR(50));```2. 插入数据 (增)向表中插入数据。
```sqlINSERT INTO users (name, email) VALUES ('Alice', '');INSERT INTO users (name, email) VALUES ('Bob', '');```3. 查询数据 (查)从表中查询数据。
```sqlSELECT FROM users; -- 查询所有用户SELECT FROM users WHERE name = 'Alice'; -- 查询名字为Alice的用户```4. 更新数据 (改)更新表中的数据。
```sqlUPDATE users SET email = '' WHERE name = 'Alice';```5. 删除数据 (删)从表中删除数据。
```sqlDELETE FROM users WHERE name = 'Bob';```6. 其他操作连接表:例如,如果你有两个表,一个是`users`,另一个是`orders`,你可以使用`JOIN`来连接它们。
排序和聚合函数:例如,使用`ORDER BY`对结果进行排序,使用`COUNT()`、`SUM()`等聚合函数。
限制和分页:使用`LIMIT`和`OFFSET`进行分页。
子查询:在一个查询中使用另一个查询的结果。
如何在PHP中使用MySQL对数据进行增删改查引言在Web开发中,数据库操作是非常常见的需求。
而MySQL作为最流行的关系型数据库管理系统之一,被广泛应用于PHP开发中。
本文将介绍如何在PHP中使用MySQL对数据进行增删改查,帮助读者掌握这一重要的开发技能。
一、连接MySQL数据库在PHP中,使用MySQL数据库进行数据操作之前,首先需要建立与数据库的连接。
可以使用以下代码来连接MySQL数据库:<?php$servername = "localhost"; //数据库服务器名称$username = "root"; //数据库用户名$password = "password"; //数据库密码// 创建连接$conn = new mysqli($servername, $username, $password);// 检测连接是否成功if ($conn->connect_error) {die("连接失败: " . $conn->connect_error);}echo "连接成功";>以上代码通过mysqli类创建了一个与MySQL数据库的连接,并检测连接是否成功。
在实际使用时,需要替换$servername、$username和$password为真实的数据库信息。
二、插入数据在PHP中插入数据到MySQL数据库非常简单。
可以使用SQL的INSERT INTO语句来执行插入操作。
以下是一个示例代码:<?php$servername = "localhost";$username = "root";$password = "password";$dbname = "myDB"; //数据库名称$conn = new mysqli($servername, $username, $password, $dbname);if ($conn->connect_error) {die("连接失败: " . $conn->connect_error);}// SQL 插入语句$sql = "INSERT INTO users (name, age, email)VALUES ('张三',20,'********************')";if ($conn->query($sql) === TRUE) {echo "新记录插入成功";} else {echo "Error: " . $sql . "<br>" . $conn->error;}$conn->close();>以上代码将一条新的记录插入到名为users的数据表中。
mySQL-CRUD操作(数据库的增删改查)练习题⼀、设有⼀数据库,包括四个表:学⽣表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。
四个表的结构分别如表1-1的表(⼀)~表(四)所⽰,数据如表1-2的表(⼀)~表(四)所⽰。
⽤SQL语句创建四个表并完成相关题⽬。
表1-1数据库的表结构表(⼀)Student (学⽣表)属性名数据类型可否为空含义Sno varchar(20)否学号(主码)Sname varchar(20)否学⽣姓名Ssex varchar(20)否学⽣性别Sbirthday datetime可学⽣出⽣年⽉Class varchar(20)可学⽣所在班级表(⼆)Course(课程表)属性名数据类型可否为空含义Cno varchar(20)否课程号(主码)Cname varchar(20)否课程名称Tno varchar(20)否教⼯编号(外码)表(三)Score(成绩表)属性名数据类型可否为空含义Sno varchar (20)否学号(外码)Cno varchar (20)否课程号(外码)Degree Decimal(4,1)可成绩主码:Sno+ Cno表(四)Teacher(教师表)属性名数据类型可否为空含义Tno varchar(20)否教⼯编号(主码)Tname varchar(20)否教⼯姓名Tsex varchar(20)否教⼯性别Tbirthday datetime可教⼯出⽣年⽉Prof varchar(20)可职称Depart varchar(20)否教⼯所在部门表1-2数据库中的数据表(⼀)StudentSno Sname Ssex Sbirthday class 108曾华男1977-09-0195033 105匡明男1975-10-0295031 107王丽⼥1976-01-2395033 101李军男1976-02-2095033 109王芳⼥1975-02-1095031 103陆君男1974-06-0395031Insert into student values()表(⼆)CourseCno Cname Tno3-105计算机导论8253-245操作系统8046-166数字电路8569-888⾼等数学831表(三)ScoreSno Cno Degree1033-245861053-245751093-245681033-105921053-105881093-105761013-105641073-105911083-105781016-166851076-166791086-16681表(四)TeacherTno Tname Tsex Tbirthday Prof Depart804李诚男1958-12-02副教授计算机系856张旭男1969-03-12讲师电⼦⼯程系825王萍⼥1972-05-05助教计算机系831刘冰⼥1977-08-14助教电⼦⼯程系1、查询Student表中的所有记录的Sname、Ssex和Class列。
一、实验目的1. 掌握数据库的基本操作,包括增加、删除、修改和查询数据。
2. 熟悉SQL语言,提高数据库操作能力。
3. 培养良好的数据库管理习惯,提高数据库使用效率。
二、实验环境1. 操作系统:Windows 102. 数据库:MySQL 5.73. 编程语言:Python 3.7三、实验内容1. 创建数据库和数据表2. 增加数据3. 删除数据4. 修改数据5. 查询数据四、实验步骤1. 创建数据库和数据表(1)打开MySQL命令行工具。
(2)输入以下SQL语句创建数据库:```sqlCREATE DATABASE IF NOT EXISTS experiment;```(3)选择实验数据库:```sqlUSE experiment;```(4)创建数据表:```sqlCREATE TABLE student (id INT PRIMARY KEY,name VARCHAR(20),age INT,gender VARCHAR(10));```2. 增加数据(1)向数据表中插入数据:```sqlINSERT INTO student (id, name, age, gender) VALUES (1, '张三', 20, '男'); INSERT INTO student (id, name, age, gender) VALUES (2, '李四', 21, '男'); INSERT INTO student (id, name, age, gender) VALUES (3, '王五', 22, '女'); ```3. 删除数据(1)删除指定数据:```sqlDELETE FROM student WHERE id = 2;```(2)删除所有数据:```sqlDELETE FROM student;```4. 修改数据(1)修改指定数据:```sqlUPDATE student SET name = '赵六' WHERE id = 3;```5. 查询数据(1)查询所有数据:```sqlSELECT FROM student;```(2)查询指定字段数据:```sqlSELECT name, age FROM student WHERE gender = '男'; ```五、实验结果与分析1. 成功创建数据库和数据表,并插入数据。
数据库的基本增删改查语句数据库的基本增删改查语句是数据库操作中最基础、最常用的语句,用于对数据库中的数据进行增加、删除、修改和查询。
下面列举了10个常用的增删改查语句,并对其进行了详细的描述。
一、增加数据(INSERT)INSERT语句用于向数据库表中插入新的数据记录。
其基本语法如下:INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...);其中,表名为要插入数据的表名,字段1、字段2为要插入数据的字段名,值1、值2为要插入的具体数值。
二、删除数据(DELETE)DELETE语句用于从数据库表中删除数据记录。
其基本语法如下:DELETE FROM 表名 WHERE 条件;其中,表名为要删除数据的表名,条件为指定的删除条件。
三、修改数据(UPDATE)UPDATE语句用于修改数据库表中的数据记录。
其基本语法如下:UPDATE 表名 SET 字段1=值1, 字段2=值2, ... WHERE 条件;其中,表名为要修改数据的表名,字段1、字段2为要修改数据的字段名,值1、值2为要修改的新数值,条件为指定的修改条件。
四、查询数据(SELECT)SELECT语句用于从数据库表中查询数据记录。
其基本语法如下:SELECT 字段1, 字段2, ... FROM 表名 WHERE 条件;其中,字段1、字段2为要查询的字段名,表名为要查询的表名,条件为指定的查询条件。
五、插入多条数据(INSERT INTO SELECT)INSERT INTO SELECT语句用于将查询结果插入到另一个表中。
其基本语法如下:INSERT INTO 表名(字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 表名 WHERE 条件;其中,表名为要插入数据的表名,字段1、字段2为要插入数据的字段名,SELECT语句用于指定要插入的数据来源。
六、删除多条数据(DELETE FROM SELECT)DELETE FROM SELECT语句用于根据查询结果删除表中的数据记录。
实验步骤:1.打开MySQL Workbench并连接到你的数据库。
2.按照实验3-1的插入操作,分别执行以下SQL语句,插入数据并检查结果。
-- 插入Autoparts表的数据INSERT INTO Autoparts (id, name, price) VALUES (1, '汽缸',200);INSERT INTO Autoparts (id, name, price) VALUES (2, '轮胎',50);-- 插入category表的数据INSERT INTO category (id, name) VALUES (1, '汽车配件');INSERT INTO category (id, name) VALUES (2, '食品');-- 插入Client表的数据INSERT INTO Client (id, name, email) VALUES (1, '张三','********************');INSERT INTO Client (id, name, email) VALUES (2, '李四','****************');-- 插入Clientkind表的数据INSERT INTO Clientkind (id, name) VALUES (1, '个人');INSERT INTO Clientkind (id, name) VALUES (2, '企业');-- 插入shoppingcart表的数据INSERT INTO shoppingcart (id, client_id, status) VALUES (1, 1, '待支付');INSERT INTO shoppingcart (id, client_id, status) VALUES (2, 2, '待收货');-- 插入Order表的数据INSERT INTO Order (id, client_id, total_price) VALUES (1, 1, 200);INSERT INTO Order (id, client_id, total_price) VALUES (2, 2,50);-- 插入order_has_Autoparts表的数据(需要先插入Autoparts表的数据)INSERT INTO order_has_Autoparts (order_id, autoparts_id,quantity) VALUES (1, 1, 2);INSERT INTO order_has_Autoparts (order_id, autoparts_id,quantity) VALUES (2, 2, 1);-- 插入Comment表的数据INSERT INTO Comment (id, client_id, content) VALUES (1, 1, '商品很好,很实用!');INSERT INTO Comment (id, client_id, content) VALUES (2, 2, '物流很快,很满意!');3.使用带Select的Insert语句完成汽车配件表Autoparts中数据的批量追加;并通过select语句检查插入前后的记录情况。
MYSQL中更新数据超简单方法replaceinto的用法以及常规增删查改在MySQL中,使用REPLACEINTO语句可以很方便地更新数据。
REPLACEINTO语句是一种组合了INSERT和UPDATE的语句,它首先尝试插入一行数据,如果有唯一键冲突,则会将已存在的行删除,然后插入新行。
下面是REPLACEINTO语句的基本语法:```REPLACE INTO table_name (column1, column2, ..., columnN) VALUES (value1, value2, ..., valueN);```其中,table_name是要更新数据的表名,column1, column2, ..., columnN是要更新的列名,value1, value2, ..., valueN是要更新的值。
REPLACEINTO语句的用法很简单,以下是一个例子:```REPLACE INTO customers (id, name, age) VALUES (1, 'John', 25);```这个例子会将id为1的行的name和age更新为'John'和25除了REPLACEINTO语句,MySQL还提供了其他常用的增删查改操作:1.插入数据:使用INSERTINTO语句插入数据,语法如下:```INSERT INTO table_name (column1, column2, ..., columnN) VALUES (value1, value2, ..., valueN);```2.删除数据:使用DELETEFROM语句删除数据,语法如下:```DELETE FROM table_name WHERE condition;```其中,table_name是要删除数据的表名,condition是删除数据的条件。
3.查询数据:使用SELECT语句查询数据,语法如下:```SELECT column1, column2, ..., columnN FROM table_name WHERE condition;```其中,column1, column2, ..., columnN是要查询的列名,table_name是要查询的表名,condition是查询的条件。
mysql数据库的增删查改实操题MySQL数据库是一种常用的关系型数据库管理系统,具有增删查改(CRUD)的基本操作。
本文将通过实操题的形式,介绍MySQL数据库的增删查改操作。
一、增加数据(Create)在MySQL中,可以使用INSERT INTO语句来向表中添加新的数据。
语法格式如下:INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...);例如,我们有一个名为"students"的表,包含"姓名"、"年龄"和"性别"三个列。
现在要向该表中添加一条新的学生记录,可以使用以下语句:INSERT INTO students (姓名, 年龄, 性别) VALUES ('张三', 18, '男');二、删除数据(Delete)在MySQL中,可以使用DELETE FROM语句来删除表中的数据。
语法格式如下:DELETE FROM 表名 WHERE 条件;例如,我们需要删除"students"表中姓名为"张三"的学生记录,可以使用以下语句:DELETE FROM students WHERE 姓名 = '张三';三、查询数据(Retrieve)在MySQL中,可以使用SELECT语句来查询表中的数据。
语法格式如下:SELECT 列1, 列2, 列3, ... FROM 表名 WHERE 条件;例如,我们需要查询"students"表中年龄小于20岁的学生记录的姓名和性别,可以使用以下语句:SELECT 姓名, 性别 FROM students WHERE 年龄 < 20;四、修改数据(Update)在MySQL中,可以使用UPDATE语句来修改表中的数据。
使用MySQL进行数据更新和删除的命令在数据库管理系统中,对数据的更新和删除操作是非常常见且重要的。
作为一种常用的关系型数据库管理系统,MySQL提供了丰富而强大的命令用于更新和删除数据。
本文将介绍MySQL中常用的数据更新和删除命令,并结合实际案例深入探讨它们的使用。
一、数据更新命令1. UPDATE命令UPDATE命令用于更新数据库中的数据。
其基本语法如下:```UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;```其中,table_name是要更新的表名,column1、column2等是要更新的列名,value1、value2等是要更新的值。
WHERE子句是一个条件,用于指定更新的数据的范围。
例如,我们有一个名为"customers"的表,其中包含了客户的信息,包括"customer_id"、"customer_name"和"customer_age"等列。
现在我们想将ID为1的客户的名称修改为"John Smith",年龄修改为30,可以使用如下命令:```UPDATE customers SET customer_name = 'John Smith', customer_age = 30 WHERE customer_id = 1;```这条命令将更新表"customers"中ID为1的客户的名称为"John Smith",年龄为30。
2. INSERT INTO ... ON DUPLICATE KEY UPDATE命令INSERT INTO ... ON DUPLICATE KEY UPDATE命令用于插入新数据或更新已存在的数据。
Unity连接Mysql数据库增删改查(分时间段取数据)1.unity连接数据库(mysql)需要的dll⽂件下载链接: 直接复制下载即可如果是android端需要全部放⼊,并且需要对应unity版本,去unity安装⽬录下找到拖进去即可,如果是PC端只需要⼀个Mysql.data.dll ⽂件就⾏ ,我的版本是Unity2019.4.5f1的, 设置⾥⾯.net设置成4.x,不然会报错下⾯上代码两个脚本都能连接成功并读取添加修改(别同时挂载,同时在应该会出BUG,可以分开试验)1.using MySql.Data.MySqlClient;using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class Connect_Mysql{public bool login_success = false;public bool register_success = false;//数据库表中的数据名字必须是⼀样的要不然上传不上去public int id;public string username;public string password;//登录验证public void Click_login(string username, string password){// server连接地址 port端⼝号 database表单名 user⽤户名 password数据库密码// ⽤户名⼀般都是root 你修改了就换成你修改的名称跟密码string sqlSer = "server =127.0.0.1;database = tool;user = root;password =123456;";//string sqlSer = "server = localhost" +// "port = 3306;" +// "database = tool;" +// "user =root;" +// "password =123456;";MySqlConnection conn = new MySqlConnection(sqlSer);try{conn.Open();Debug.Log("------连接成功------");//user 表名string sqlQuary = "select * from user where username =@paral1 and password = @paral2";MySqlCommand comd = new MySqlCommand(sqlQuary, conn);comd.Parameters.AddWithValue("paral1", username);comd.Parameters.AddWithValue("paral2", password);MySqlDataReader reader = comd.ExecuteReader();if (reader.Read()){Debug.Log("------⽤户存在,登录成功!------");//进⾏登⼊成功后的操作,例如进⼊新场景。
python操作mysql数据库实现增删改查Python 标准数据库接⼝为 Python DB-API,Python DB-API为开发⼈员提供了数据库应⽤编程接⼝。
Python 数据库接⼝⽀持⾮常多的数据库,你可以选择适合你项⽬的数据库:GadFlymSQLPostgreSQLMicrosoft SQL Server 2000InformixInterbaseOracleSybase你可以访问查看详细的⽀持数据库列表。
不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。
DB-API 是⼀个规范. 它定义了⼀系列必须的对象和数据库存取⽅式, 以便为各种各样的底层数据库系统和多种多样的数据库接⼝程序提供⼀致的访问接⼝。
Python的DB-API,为⼤多数的数据库实现了接⼝,使⽤它连接各数据库后,就可以⽤相同的⽅式操作各数据库。
Python DB-API使⽤流程:引⼊ API 模块。
获取与数据库的连接。
执⾏SQL语句和存储过程。
关闭数据库连接。
什么是MySQLdb?MySQLdb 是⽤于Python链接Mysql数据库的接⼝,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建⽴的。
如何安装MySQLdb?为了⽤DB-API编写MySQL脚本,必须确保已经安装了MySQL。
复制以下代码,并执⾏:#!/usr/bin/python# -*- coding: UTF-8 -*-import MySQLdb如果执⾏后的输出结果如下所⽰,意味着你没有安装 MySQLdb 模块:Traceback (most recent call last):File "test.py", line 3, in <module>import MySQLdbImportError: No module named MySQLdb安装MySQLdb,请访问,(Linux平台可以访问:)从这⾥可选择适合您的平台的安装包,分为预编译的⼆进制⽂件和源代码安装包。
mysql增删改查基本语法
MySQL是一种关系型数据库管理系统,它使用结构化查询语言(SQL)来进行数据增删改查的操作。
以下是MySQL的基本增删改查的语法:
1. 增加数据(INSERT):
- `INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);`
2. 删除数据(DELETE):
- `DELETE FROM 表名 WHERE 条件;`
3. 修改数据(UPDATE):
- `UPDATE 表名 SET 列名1=新值1, 列名2=新值2, ... WHERE 条件;`
4. 查询数据(SELECT):
- 查询所有列:
- `SELECT * FROM 表名;`
- 查询指定列:
- `SELECT 列名1, 列名2, ... FROM 表名;`
- 查询满足条件的数据:
- `SELECT * FROM 表名 WHERE 条件;`
- 排序:
- `SELECT * FROM 表名 ORDER BY 列名 ASC|DESC;`
- 分页查询:
- `SELECT * FROM 表名 LIMIT 开始位置, 查询数量;`
注意:上述语法中,表名是要操作的数据库表的名称,列名是要操作的表的具体列的名称,值是要插入、修改或删除的具体数据的值,条件是用于指定要查询、删除和更新的具体行的条件。
ASC是升序排序,DESC是降序排序。
这只是MySQL的基本语法示例,实际应用中还有更多的高级用法和语法可以探索。
mysql修改⽤户权限刷新权限设置增删改查已有⽤户修改权限,根据我测试,需要先删除原有权限,然后再设置新权限查询⽤户权限show grants for 'root'@'%';刷新权限FLUSH PRIVILEGES;查看当前⽤户SELECT CURRENT_USER();设置⽤户只能增删改查grant select,delete,insert,update on 数据库.* to ⽤户名@'127.0.0.1';创建⽤户GRANT Select,Update,insert,delete ON 数据库(*).* TO '⽤户名'@"%" IDENTIFIED BY "密码";删除⽤户权限REVOKE select,insert ON 数据库.* FROM testuser@'localhost'权限列表All/All Privileges权限代表全局或者全数据库对象级别的所有权限Alter权限代表允许修改表结构的权限,但必须要求有create和insert权限配合。
如果是rename表名,则要求有alter和drop原表, create 和insert新表的权限Alter routine权限代表允许修改或者删除存储过程、函数的权限Create权限代表允许创建新的数据库和表的权限Create routine权限代表允许创建存储过程、函数的权限Create tablespace权限代表允许创建、修改、删除表空间和⽇志组的权限Create temporary tables权限代表允许创建临时表的权限Create user权限代表允许创建、修改、删除、重命名user的权限Create view权限代表允许创建视图的权限Delete权限代表允许删除⾏数据的权限Drop权限代表允许删除数据库、表、视图的权限,包括truncate table命令Event权限代表允许查询,创建,修改,删除MySQL事件Execute权限代表允许执⾏存储过程和函数的权限File权限代表允许在MySQL可以访问的⽬录进⾏读写磁盘⽂件操作,可使⽤的命令包括load data infile,select … into outfile,load file()函数Grant option权限代表是否允许此⽤户授权或者收回给其他⽤户你给予的权限,重新付给管理员的时候需要加上这个权限Index权限代表是否允许创建和删除索引Insert权限代表是否允许在表⾥插⼊数据,同时在执⾏analyze table,optimize table,repair table语句的时候也需要insert权限Lock权限代表允许对拥有select权限的表进⾏锁定,以防⽌其他链接对此表的读或写Process权限代表允许查看MySQL中的进程信息,⽐如执⾏show processlist, mysqladmin processlist, show engine等命令Reference权限是在5.7.6版本之后引⼊,代表是否允许创建外键Reload权限代表允许执⾏flush命令,指明重新加载权限表到系统内存中,refresh命令代表关闭和重新开启⽇志⽂件并刷新所有的表Replication client权限代表允许执⾏show master status,show slave status,show binary logs命令Replication slave权限代表允许slave主机通过此⽤户连接master以便建⽴主从复制关系Select权限代表允许从表中查看数据,某些不查询表数据的select执⾏则不需要此权限,如Select 1+1, Select PI()+2;⽽且select权限在执⾏update/delete语句中含有where条件的情况下也是需要的Show databases权限代表通过执⾏show databases命令查看所有的数据库名Show view权限代表通过执⾏show create view命令查看视图创建的语句Shutdown权限代表允许关闭数据库实例,执⾏语句包括mysqladmin shutdownSuper权限代表允许执⾏⼀系列数据库管理命令,包括kill强制关闭某个连接命令, change master to创建复制关系命令,以及create/alter/drop server等命令Trigger权限代表允许创建,删除,执⾏,显⽰触发器的权限Update权限代表允许修改表中的数据的权限Usage权限是创建⼀个⽤户之后的默认权限,其本⾝代表连接登录权限1、创建新⽤户 通过root⽤户登录之后创建 >> grant all privileges on *.* to testuser@localhost identified by "123456" ; // 创建新⽤户,⽤户名为testuser,密码为123456 ; >> grant all privileges on *.* to testuser@localhost identified by "123456" ; // 设置⽤户testuser,可以在本地访问mysql >> grant all privileges on *.* to testuser@"%" identified by "123456" ; // 设置⽤户testuser,可以在远程访问mysql >> flush privileges ; // mysql 新设置⽤户或更改密码后需⽤flush privileges刷新MySQL的系统权限相关表,否则会出现拒绝访问,还有⼀种⽅法,就是重新启动mysql服务器,来使新设置⽣效 2、设置⽤户访问数据库权限 >> grant all privileges on test_db.* to testuser@localhost identified by "123456" ; // 设置⽤户testuser,只能访问数据库test_db,其他数据库均不能访问; >> grant all privileges on *.* to testuser@localhost identified by "123456" ; // 设置⽤户testuser,可以访问mysql上的所有数据库; >> grant all privileges on test_er_infor to testuser@localhost identified by "123456" ; // 设置⽤户testuser,只能访问数据库test_db的表user_infor,数据库中的其他表均不能访问; 3、设置⽤户操作权限 >> grant all privileges on *.* to testuser@localhost identified by "123456" WITH GRANT OPTION ; //设置⽤户testuser,拥有所有的操作权限,也就是管理员; >> grant select on *.* to testuser@localhost identified by "123456" WITH GRANT OPTION ; //设置⽤户testuser,只拥有【查询】操作权限; >> grant select,insert on *.* to testuser@localhost identified by "123456" ; //设置⽤户testuser,只拥有【查询\插⼊】操作权限; >> grant select,insert,update,delete on *.* to testuser@localhost identified by "123456" ; //设置⽤户testuser,只拥有【查询\插⼊】操作权限; >> REVOKE select,insert ON what FROM testuser //取消⽤户testuser的【查询\插⼊】操作权限; 4、设置⽤户远程访问权限 >> grant all privileges on *.* to testuser@“192.168.1.100” identified by "123456" ; //设置⽤户testuser,只能在客户端IP为192.168.1.100上才能远程访问mysql ; 5、关于root⽤户的访问设置 设置所有⽤户可以远程访问mysql,修改f配置⽂件,将bind-address = 127.0.0.1前⾯加“#”注释掉,这样就可以允许其他机器远程访问本机mysql了; >> grant all privileges on *.* to root@"%" identified by "123456" ; // 设置⽤户root,可以在远程访问mysql >> select host,user from user; //查询mysql中所有⽤户权限 关闭root⽤户远程访问权限 >> delete from user where user="root" and host="%" ; //禁⽌root⽤户在远程机器上访问mysql >> flush privileges ; //修改权限之后,刷新MySQL的系统权限相关表⽅可⽣效 。
androidstudio实例练习(三)Mysql数据库之封装增删改查操作为了简便数据库操作,将常⽤的操作按照⾯对对象的思想封装起来。
⾸先是创建⼀个MysqlTool的⼯具类,SqlTool.class.php。
这个类中封装了dql(查询)与dml(增,删,改)操作。
dql语句得到的是⼀个详细的结果,⽽dml则得到的是⼀个布尔值。
<?phpclass SqlTool{private$conn;private$host="localhost";private$user="root";private$password="root";private$db="test";function SqlTool(){$this->conn=mysql_connect($this->host,$this->user,$this->password);if(!$this->conn){die("数据库连接失败".mysql_error());}mysql_select_db($this->db,$this->conn);}function execute_dql($sql){$res=mysql_query($sql) or die("查询失败".mysql_error());return$res;}//完成update,delete,insertfunction execute_dml($sql){$b=mysql_query($sql,$this->conn);if(!$b){return 0;//失败}else{if(mysql_affected_rows($this->conn)>0){return 1;//成功}else{return 2;}}}}之后,再在另⼀个操作⽂件中进⾏操作。
MysqlOracle(甲骨文) 大型数据库MySql 中小型数据库DB2SqlServer.....Mysql的发展:瑞典的Mysql AB公司2008年Sun公司(JAVA)2009年Oracle 收购sun公司IBM 69亿美元sun Eclipse(日蚀)Oracle 74亿美元sunMysql的简单使用:1.登陆mysql数据库win+r --->cmdmysql -uroot -p1234修改密码:mysql> set password for rootlocalhost = password('1234');此处可能存在异常情况原因:a、未配置环境变量b、Mysql服务未开启(net start mysql)2.对库的操作a.查看所有的库show databases;系统自带库:information_schema mysql testb.创建库create database day01;(不指定编码,跟随数据库系统编码)create database db1default character set gbk;(指定编码)查看创建库的语句:show create database 库名.修改库的编码:alter database day01default character set utf8;c.删除库drop database 库名.drop database day01;注意:系统自带的三个库不能删除.d.使用库use db1;3.对表的操作表:二维关系表有行有列的关系表.记录:表中的一行数据.字段:表中的一列.常用的字段类型:字符串类型: varchar(长度) 、char数值类型: int(整数) float double(小数)日期类型: datea.创建表员工表:员工号性别年龄职位薪水入职日期create table emp(empno varchar(4),name varchar(30),sex varchar(5),age int(3),job varchar(30),salary int(5),hiredate date);b.查看所有的表show tables;c.查看建表语句show create table 表名.d.查看表结构desc 表名.e.往表中插入数据e1.给表中所有的字段插入数据insert into emp(empno,name,sex,age,job,salary,hiredate)values('1001','zhangsan','m',22,'developer',10000,'2015-12-21');简写形式:insert into emp values('1002','lisi','m',23,'test',8000,'2015-10-10');e2.给表中部分字段插入数据insert into emp(empno,name,sex,age) values('1003','cuihua','w',18);解决插入中文问题:(eclipse中的设置)Connection URL:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk 插入中文:insert into emp values('1005','莫小贝','女',12,'武林盟主',20000,'2015-12-12');f.删除数据delete from emp ;-->删除表中所有数据delete from emp where empno=1004;MyEclipse配置Mysql连接:1.切换到数据库界面.2.在DBBroswer中右键选择new3.配置连接:Driver Template: MySQL Connector/JDriver name: 随便起名字Connection URL: jdbc:mysql://localhost:3306/test本机:localhost127.0.0.l192.168.4.223User name:rootpassword:1234Driver JARs: mysql-connector-java-5.17-bin.jarMysql常见的错误1.Can't create database 'xxx'; database exists不能创建xxx库,因为已经存在2.Can't drop database 'xxx'; database doesn't exist不能删除xxx库,因为已经不存在-- 创建库create database search default character set gbk ;-- 使用库use search;-- 创建表-- 员工信息表create table emp(empno int(4), -- 员工编号ename varchar(30), -- 员工job varchar(30), -- 职位salary int , -- 工资bonus int, -- 奖金age int(3), -- 年龄sex varchar(1), -- 性别hiredate date, -- 入职日期manager int(4), -- 领导编号deptno int -- 部门编号);-- 部门表:create table dept(deptno int, -- 部门编号dname varchar(50),-- 部门名称loc varchar(80) -- 部门位置);-- 往emp表中插入数据null 空:没有不存在insert into emp(empno,ename,job,salary,bonus,age,sex,hiredate,manager,deptno) values(1001,'三丰','老板',20000,100,30,'m','2009-02-02',null,10);insert into emp values(1002,'无忌','程序猿',12000,200,20,'m','2010-03-02',1001,10); insert into emp values(1003,'小龙女','程序猿',10000,300,18,'f','2012-12-02',1001,10); insert into emp values(1004,'过','程序猿',10000,200,22,'m','2012-12-22',1003,10); insert into emp values(1005,'黄蓉','攻城师',15000,100,25,'f','2012-12-28',1001,20); insert into emp values(1006,'郭靖','攻城师',13000,100,28,'m','2013-12-02',1005,20); insert into emp values(1007,'莫愁','秘书',8000,50,22,'f','2013-03-02',1001,30);insert into emp values(1008,'韦小宝','实施',8500,null,29,'m','2013-04-02',1001,30); insert into emp values(1009,'陆无双','实施',6000,100,26,'m','2014-12-12',1001,30); insert into emp values(1010,'黄飞鸿','打手',5000,100,20,'m','2015-03-02',1001,null);-- 给dept表插入数据insert into dept values(10,'研发部','');insert into dept values(20,'运维部','');insert into dept values(30,'实施部','');-- 查询use search ;-- 1.查询emp表中的所有数据select * from emp ;-- * 通配符通配了emp表中的所有列。
select empno,ename,job,salary,bonus,age,hiredate,sex ,manager,deptno from emp ;-- select(选择,筛选..) from(从...地方)-- 执行顺序: from -->select-- 2.查询emp表中员工名字以及员工的薪水select ename,salary from emp ;-- 查询部分字段: select 字段名1,字段名2.... from 表;-- 3.查询薪水大于10000的员工.-- 查什么员工--->ename --->empno --->salary-- 查询条件是什么salary >10000select empno,ename,salaryfrom emp where salary>10000;-- select from where-- 执行顺序: from --> where -->select-- 4.查询薪水大于等于10000并且小于等于18000的员工-- 查什么empno ename salary-- 查询的条件是什么10000=<salary<=18000(数学中的写法) -- salary >=10000 and && salary <=18000select empno,ename,salary from empwhere salary >=10000 and salary <=18000;-- between and:在...之间.select empno ,ename, salary from empwhere salary between 10000 and 18000;select * from emp ;-- 5.查询薪水是10000或者12000的员工.select empno,ename,salary from empwhere salary =10000 or salary =12000;-- in(10000,12000);select empno ,ename,salary from empwhere salary in(10000,12000);-- 6.查询职位是程序猿或者是攻城师并且薪水在10000 到-- 20000之间,并且性别是男的员工-- 查什么empno ename job salary sex-- 查询的条件是什么-- a.职位是程序猿或者是攻城师job in('程序猿','攻城师')-- b.薪水在10000到20000之间salary between 10000 and 20000 -- c.性别是男sex='m'-- a and b and cselect empno ,ename,job, salary ,sex from empwhere job in('程序猿','攻城师') andsalary between 10000 and 20000 andsex = 'm';-- 错误演示select empno ,ename,job, salary ,sex from empwhere job='程序猿' or job='攻城师' andsalary between 10000 and 20000 andsex = 'm';select empno ,ename,job, salary ,sex from empwhere job='攻城师' or job='程序猿' andsalary between 10000 and 20000 andsex = 'm';-- 7.查询奖金为null的员工select ename ,bonus from emp where bonus = null;select * from emp ;-- null: 空没有不存在-- 和null做比较不能使用= > <.. 要使用isselect ename,bonus from empwhere bonus is null ;-- 8.查询奖金不是null的员工select ename ,bonus from empwhere bonus is not null ;-- 9.查询所有员工的年薪12*(salary+bonus)select ename, 12*(salary+bonus) from emp;-- 与null做运算,结果都为null-- 空值处理函数: ifnull()-- ifnull(bonus,0):-- 如果bonus为null,则处理成0-- 如果bonus不为null,则不处理.按照bonus实际的值运算.select ename,12*(salary+ifnull(bonus,0))from emp ;-- 函数: 单行函数组函数(聚合函数)-- 单行函数: 单行函数会对表中的每一条记录进行操作-- 并且每一条记录都会产生一个结果.-- now(): 查询当前时间select now() from emp ;-- 10.查询2012年入职的员工2012-01-01 2012-12-31select ename ,hiredate from empwhere hiredate between '2012-01-01'and '2012-12-31';-- year(date):提取日期中的年份-- year(2012-12-12)--->2012select ename,hiredate from empwhere year(hiredate) = 2012;-- 11.查询员工的工作年限select ename, year(now())-year(hiredate) from emp ;-- 12.查询实现如下结果: 我是xxx,我的职位是xxx-- concat('我是',ename,',我的职位是',job ); 连接函数.将给定的字段连接成字符串。